Bài tập lớn lập trình hướng đối tượng mips

  • 1. Cáo Thực Hành Môn Học : Lập Trình Hướng Đối Tượng C++   Ngành CNTT - Trường CĐ Công Nghệ Thông Tin  Page 1 Giáo viên hướng dẫn : Nguyễn Đức Hiển Sinh viên thực hiện : Nguyễn Tiến Hoài Nam Lớp : 06I
  • 2. Cáo Thực Hành Môn Học : Lập Trình Hướng Đối Tượng C++   Ngành CNTT - Trường CĐ Công Nghệ Thông Tin  Page 2 Câu 1: void swap(int *a,int *b) { int c; c=*a; *a=*b; *b=c; } void main() { clrscr(); int a,b,i,j,n; int d[50]; cout<<"nso phan tu cua day la n="; cin>>n; for(i=1;i<=n;i++) { cout<<"nhap so d["<>d[i]; } cout<<"day duoc sap sep tang dan :n"; for(i=1;i<=n;i++) for(j=i+1;jd[j]) swap(&d[i],&d[j]); for(i=1;i<=n;i++) { cout<
  • 3. Cáo Thực Hành Môn Học : Lập Trình Hướng Đối Tượng C++   Ngành CNTT - Trường CĐ Công Nghệ Thông Tin  Page 3 PhanSo operator + (PhanSo a ,PhanSo b); PhanSo operator - (PhanSo a ,PhanSo b); PhanSo operator * (PhanSo a ,PhanSo b); PhanSo operator / (PhanSo a ,PhanSo b); int operator > (PhanSo a ,PhanSo b); int operator >=(PhanSo a ,PhanSo b); int operator < (PhanSo a ,PhanSo b); int operator <=(PhanSo a ,PhanSo b); int operator ==(PhanSo a ,PhanSo b); int operator !=(PhanSo a ,PhanSo b); PhanSo RutGonPS (PhanSo a); } void main() { clrscr(); PhanSo a,b,c; cout<<"Tu So a="; cin>>a.TuSo; cout<<"MauSo a="; cin>>a.MauSo; cout<<"Tu So b="; cin>>b.TuSo; cout<<"MauSo b="; cin>>b.MauSo; cout<<"na="<b)
  • 4. Cáo Thực Hành Môn Học : Lập Trình Hướng Đối Tượng C++   Ngành CNTT - Trường CĐ Công Nghệ Thông Tin  Page 4 cout<<"nPS a lon hon PS b"; else if(b>a) cout<<"nPS b lon hon PS a"; else cout<<"na=b"; if (a>=b) cout<<"nPS a lon hon hoac bang PS b"; else cout<<"nPS b lon hon hoac bang PS a"; if (a
  • 5. Cáo Thực Hành Môn Học : Lập Trình Hướng Đối Tượng C++   Ngành CNTT - Trường CĐ Công Nghệ Thông Tin  Page 5 { PhanSo c; c.TuSo=a.TuSo*b.MauSo; c.MauSo=a.MauSo*b.TuSo; return c; } int operator > (PhanSo a ,PhanSo b) { if(a.TuSo*b.MauSo>b.TuSo*a.MauSo) return 1; else return 0; } int operator >= (PhanSo a ,PhanSo b) { if(a.TuSo*b.MauSo>=b.TuSo*a.MauSo) return 1; else return 0; } int operator < (PhanSo a ,PhanSo b) { if(a.TuSo*b.MauSo
  • 6. Cáo Thực Hành Môn Học : Lập Trình Hướng Đối Tượng C++   Ngành CNTT - Trường CĐ Công Nghệ Thông Tin  Page 6 { if(a.TuSo*b.MauSo!=b.TuSo*a.MauSo) return 1; else return 0; } PhanSo RutGonPS (PhanSo a) { int UCLN; int n=abs(a.TuSo),m=abs(a.MauSo); while (n != 0 && m != 0) if (n>m) n -= m; else m -= n; if (n != 0) UCLN= n; else UCLN= m; a.TuSo=a.TuSo/UCLN; a.MauSo=a.MauSo/UCLN; return a; } Câu 3: struct sophuc { double thuc; double ao; }; sophuc lapsophuc() { int x,y; sophuc tam; cout<<"nthuc:"<>x; tam.thuc=x; cout<<"nao:"<>y; tam.ao=y; return tam; } void display(sophuc a) { cout<<"("<
  • 7. Cáo Thực Hành Môn Học : Lập Trình Hướng Đối Tượng C++   Ngành CNTT - Trường CĐ Công Nghệ Thông Tin  Page 7 sophuc operator + (sophuc a,sophuc b) { sophuc tam; tam.thuc=a.thuc+b.thuc; tam.ao=a.ao+b.ao; return tam; } sophuc operator - (sophuc a,sophuc b) { sophuc tam; tam.thuc=a.thuc-b.thuc; tam.ao=a.ao-b.ao; return tam; } sophuc operator * (sophuc a,sophuc b) { sophuc tam; tam.thuc= (a.thuc*b.thuc)-(a.ao*b.ao); tam.ao= (a.thuc*b.ao)+(b.thuc*a.ao); return tam; } sophuc operator / (sophuc a,sophuc b) { sophuc tam; if((b.thuc!=0.0)&&(b.ao!=0.0)) { tam.thuc= ((a.thuc*b.thuc)+(a.ao*b.ao))/((b.thuc*b.thuc)+(b.ao*b.ao)); tam.ao= ((b.thuc*a.ao)- (a.thuc*b.ao))/((b.thuc*b.thuc)+(b.ao*b.ao)); } return tam; } int operator == (sophuc a,sophuc b) { return ((a.thuc==b.thuc)&&(a.ao==b.ao)); } int operator != (sophuc a,sophuc b) { return ((a.thuc!=b.thuc)||(a.ao!=b.ao)); } void main() { clrscr(); sophuc x,y,z,t,s,r;
  • 8. Cáo Thực Hành Môn Học : Lập Trình Hướng Đối Tượng C++   Ngành CNTT - Trường CĐ Công Nghệ Thông Tin  Page 8 cout<<"nso phuc x:"; x=lapsophuc(); cout<<"nx"; display(x); cout<<"nso phuc y:"; y=lapsophuc(); cout<<"ny"; display(y); z=x+y; cout<<"ncong hai so phuc:"; display(z); t=x-y; cout<<"nhieu hai so phuc:"; display(t); s=x*y; cout<<"ntich hai so phuc:"; display(s); r=x/y; cout<<"nthuong hai so phuc:"; display(r); if(x==y) { cout<<"nhai so phuc bang nhau";} else { cout<< "nhai so phuc khong bang nhau"; } if(x!=y) { cout<<"nhai so phuc khac nhau";} else { cout<<"nhai so phuc khong khac nhau";} getch(); } Câu 4: class sinhvien { public: char *ten; float toan , ly ,hoa ,dtb; void nhap(); void xuat(); friend void hoanvi(float *a,float *b); }; void sinhvien::nhap() { cout<<"vui long nhap cac thong tin sau :n";
  • 9. Cáo Thực Hành Môn Học : Lập Trình Hướng Đối Tượng C++   Ngành CNTT - Trường CĐ Công Nghệ Thông Tin  Page 9 cout<<"ten sinh vien :"; cin>>ten; cout<<"ndiem toan :"; cin>>toan; cout<<"ndiem ly :"; cin>>ly; cout<<"ndiem hoa :"; cin>>hoa; dtb=(toan+ly+hoa)/3; } void sinhvien::xuat() { cout<<"nten sinh vien :"<
  • 10. Cáo Thực Hành Môn Học : Lập Trình Hướng Đối Tượng C++   Ngành CNTT - Trường CĐ Công Nghệ Thông Tin  Page 10 Câu 5: class hcnhat { private: int chdai,chrong; public: void nhap(); int chuvi(); int dientich(); void xuat(); }; void hcnhat::nhap() { cout<<"nhap chieu dai :"; cin>>chdai; cout<<"nhap chieu rong :"; cin>>chrong; } int hcnhat::chuvi() { return (chdai+chrong)*2; } int hcnhat::dientich() { return chdai*chrong; } void hcnhat::xuat() { cout<<"chieu dai la :"<
  • 11. Cáo Thực Hành Môn Học : Lập Trình Hướng Đối Tượng C++   Ngành CNTT - Trường CĐ Công Nghệ Thông Tin  Page 11 Câu 6: class phanso { private: int tuso, mauso; public: void nhap(); friend phanso rutgon(phanso p); friend phanso cong(phanso p1,phanso p2); friend phanso tru(phanso p1, phanso p2); friend phanso nhan(phanso p1,phanso p2); friend phanso chia(phanso p1,phanso p2); void xuat(); }; void phanso::nhap() { phanso p1,p2; cout<<"nhap tu so cua ps a :"; cin>>p1.tuso; cout<<"nnhap mau so cua ps a :"; cin>>p1.mauso; cout<<"nnhap tu so cua ps b :"; cin>>p2.tuso; cout<<"nnhap mau so cua ps b :"; cin>>p2.mauso; } int ucln(int x,int y) { x=abs(x);y=abs(y); if(x*y==0) return 1; while(x!=y) if(x>y) x-=y; else y-=x; return x; } phanso rutgon(phanso p) { phanso q; int x; x=ucln(p.tuso,p.mauso); q.tuso=p.tuso/x; q.mauso=p.mauso/x; return q; }
  • 12. Cáo Thực Hành Môn Học : Lập Trình Hướng Đối Tượng C++   Ngành CNTT - Trường CĐ Công Nghệ Thông Tin  Page 12 phanso cong(phanso p1,phanso p2) { p1.tuso=p1.tuso*(p2.mauso) + p2.tuso*(p1.mauso); p1.mauso=p1.mauso*p2.mauso; return rutgon(p1); } phanso tru(phanso p1,phanso p2) { p1.tuso=p1.tuso*p2.mauso - p2.tuso*p1.mauso; p1.mauso=p1.mauso*p2.mauso; return rutgon(p1); } phanso nhan(phanso p1,phanso p2) { p1.tuso=p1.tuso*p2.tuso; p1.mauso=p1.mauso*p2.mauso; return rutgon(p1); } phanso chia(phanso p1,phanso p2) { p1.tuso=p1.tuso*p2.mauso; p1.mauso=p1.mauso*p2.tuso; return rutgon(p1); } void phanso::xuat() { phanso p1,p2,c,t,n,ch; c=cong(p1,p2); t=tru(p1,p2); n=nhan(p1,p2); ch=chia(p1,p2); cout<<"na+b="<
  • 13. Cáo Thực Hành Môn Học : Lập Trình Hướng Đối Tượng C++   Ngành CNTT - Trường CĐ Công Nghệ Thông Tin  Page 13 Câu 7: class sophuc { private: double thuc; double ao; public: void nhap() { cout<<"nthuc="; cin>>thuc; cout<<"nao="; cin>>ao; } void in(sophuc a) { cout<<"("<thuc+a.thuc; tam.ao =this->ao+a.ao; return tam; } sophuc operator - ( sophuc a) { sophuc tam; tam.thuc=this->thuc-a.thuc; tam.ao =this->ao-a.ao; return tam; } sophuc operator * ( sophuc a) { sophuc tam; tam.thuc= (this->thuc*a.thuc)-(this->ao*a.ao); tam.ao= (this->thuc*a.ao)+(a.thuc*this->ao); return tam; } sophuc operator / ( sophuc a) { sophuc tam; if((a.thuc!=0.0)&&(a.ao!=0.0)) tam.thuc= ((this->thuc*a.thuc)+(this- >ao*a.ao))/((a.thuc*a.thuc)+(a.ao*a.ao));
  • 14. Cáo Thực Hành Môn Học : Lập Trình Hướng Đối Tượng C++   Ngành CNTT - Trường CĐ Công Nghệ Thông Tin  Page 14 tam.ao= ((a.thuc*this->ao)-(this- >thuc*a.ao))/((a.thuc*a.thuc)+(a.ao*a.ao)); return tam; } int operator == (sophuc a) { return ((this->thuc==a.thuc)&&(this->ao==a.ao)); } int operator != (sophuc a) { return ((this->thuc!=a.thuc)||(this->ao!=a.ao)); } }; void main() { clrscr(); sophuc a,b,c; cout<<"nsophuc a"; a.nhap(); cout<<"nsophuc b"; b.nhap(); c=a+b; cout<<"na+b=" ; c.in(c); c=a-b; cout<<"na-b="; c.in(c); c=a*b; cout<<"na*b="; c.in(c); c=a/b; cout<<"na/b="; c.in(c); if(a==b) cout<<"nhai so phuc bang nhau"; else cout<<"nhai so phuc khong bang nhau"; if(a!=b) cout<<"nhai so phuc khac nhau"; else cout<<"nhai so phuc khong khac nhau"; getch(); }
  • 15. Cáo Thực Hành Môn Học : Lập Trình Hướng Đối Tượng C++   Ngành CNTT - Trường CĐ Công Nghệ Thông Tin  Page 15 Câu 8: struct matran { double mt[20][20]; int n; }; ostream& operator <<(ostream& os, const matran& x) { os<>(istream& is,matran& x) { cout<<"cap ma tran vuong:"; is>>x.n; cout<<"nhap cac phan tu :n"; for(int i=1;i<=x.n;++i) for(int j=1;j<=x.n;++j) { cout<<"a["<>x.mt[i][j]; } return is; } matran operator +(matran a, matran b) { matran c; for(int i=1;i<=a.n;++i) for(int j= 1;j<=a.n;++j) c.mt[i][j]= a.mt[i][j] + b.mt[i][j]; return c; } matran operator -(matran a,matran b) { matran c; int i,j; if(a.n!=b.n) { cout<<"nkhong thuc hien duoc phep tru vi 2 MT khong cung cap"; getch();
  • 16. Cáo Thực Hành Môn Học : Lập Trình Hướng Đối Tượng C++   Ngành CNTT - Trường CĐ Công Nghệ Thông Tin  Page 16 return a; } else for(i=1;i<=a.n;++i) for(j= 1;j<=a.n;++j) c.mt[i][j]= a.mt[i][j] - b.mt[i][j]; return c; } matran operator *(matran a, matran b) { if(a.n!=b.n) { cout<<"nkhong thuc hien duoc phep nhan vi 2 MT khong cung cap"; getch(); return a; } else { matran c; int i,j,k; for(i=1;i<=a.n;++i) for(j=1;j<=a.n;++j) { c.mt[i][j]=0.0; for(k=1;k<=a.n;++k) c.mt[i][j]+=a.mt[i][k]*b.mt[k][i]; } return c; } } void main() { clrscr(); matran a,b,c,d,e; int n,i,j; cout<<"nnhap ma tran A";cin>>a; cout<<"nnhap ma tran B";cin>>b; c = a+b; cout<<"nket qua A + B :"; for(i=1;i<=a.n;++i) for(j=1;j<=a.n;++j) cout<<"tc["<>x>>y; } void xuat() { cout<
  • 18. Cáo Thực Hành Môn Học : Lập Trình Hướng Đối Tượng C++   Ngành CNTT - Trường CĐ Công Nghệ Thông Tin  Page 18 getch(); } Câu 10: class DIEM { int x,y; public : DIEM() { x=y=0; } DIEM(int x1,int y1) { x=x1;y=y1; } DIEM(DIEM &d) { this->x=d.x; this->y=d.y; } int operator[](int i) { if(i==1)return x; else return y; } }; class DUONG_TRON:public DIEM { int r,md; public: DUONG_TRON():DIEM() { r=md=0; } DUONG_TRON(DIEM d,int r1, int md1):DIEM(d) { r=r1;md=md1; } void ve() { setcolor(md); circle((*this)[1],(this)[2],r); } int getmd()
  • 19. Cáo Thực Hành Môn Học : Lập Trình Hướng Đối Tượng C++   Ngành CNTT - Trường CĐ Công Nghệ Thông Tin  Page 19 { return md; } }; void ktdh() { int mh=0,mode=0; initgraph(&mh,&mode,""); } void main() { ktdh(); DUONG_TRON dt(DIEM(100,100),80,MAGENTA); dt.ve(); getch(); closegraph(); } Câu 11: class DIEM { private : double x,y; public : DIEM() { x=y=0.0; } DIEM(double x1,double y1) { x=x1;y=y1; } void in() { cout<<"nx="<
  • 22. Cáo Thực Hành Môn Học : Lập Trình Hướng Đối Tượng C++   Ngành CNTT - Trường CĐ Công Nghệ Thông Tin  Page 22 giao_vien(char*ten1,char*diachi1,int ns1,char*mon1,int sotiet1):nguoi(ten1,diachi1,ns1),mh(mon1,sotiet1) {} ~giao_vien() {} void xuat() { nguoi::xuat() ; mh.xuat(); } }; void main() { clrscr(); giao_vien a; // goi toi ham tao khong doi giao_vien *b; //goi toi ham tao co doi b= new giao_vien("nhu quynh","da nang",1988,"tin",60); cout<<"ngoi ham xuat tu lop giao vien"; b->xuat(); cout<<"ngoi ham xuat tu lop nguoi"; b->nguoi::xuat(); getch(); delete b; getch(); } _____♠The End♠______