Bài Báo cáo thực hành môn học: Lập trình hướng đối tượng C++
Bạn đang xem 20 trang mẫu của tài liệu "Bài Báo cáo thực hành môn học: Lập trình hướng đối tượng C++ ", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Tài liệu đính kèm:
- bai_bao_cao_thuc_hanh_mon_hoc_lap_trinh_huong_doi_tuong_c.doc
Nội dung text: Bài Báo cáo thực hành môn học: Lập trình hướng đối tượng C++
- Bài Báo Cáo Thực Hành Môn Học : Lập Trình Hướng Đối Tượng C++ 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 Ngành CNTT - Trường CĐ Công Nghệ Thông Tin Page 1
- Bài Báo Cáo Thực Hành Môn Học : Lập Trình Hướng Đối Tượng C++ 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 >n; for(i=1;i >d[i]; } cout d[j]) swap(&d[i],&d[j]); for(i=1;i<=n;i++) { cout<<d[i]<<"\t"; } cout<<"\nday duoc sap sep giam dan :\n"; for(i=1;i<=n;i++) for(j=i+1;j<n+1;j++) if(d[i]<d[j]) swap(&d[i],&d[j]); for(i=1;i<=n;i++) { cout<<d[i]<<"\t"; } getch(); } Câu 2: struct PhanSo { int TuSo; int MauSo; }; Ngành CNTT - Trường CĐ Công Nghệ Thông Tin Page 2
- Bài Báo Cáo Thực Hành Môn Học : Lập Trình Hướng Đối Tượng C++ 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 >a.TuSo; cout >a.MauSo; cout >b.TuSo; cout >b.MauSo; cout b) Ngành CNTT - Trường CĐ Công Nghệ Thông Tin Page 3
- Bài Báo Cáo Thực Hành Môn Học : Lập Trình Hướng Đối Tượng C++ cout a) cout =b) cout<<"\nPS a lon hon hoac bang PS b"; else cout<<"\nPS b lon hon hoac bang PS a"; if (a<b) cout<<"\nPS a be hon PS b"; else if (b<a) cout<<"\nPS b be hon PS a"; else cout<<"\nb=a"; if (a<=b) cout<<"\nPS a be hon hoac bang PS b"; else cout<<"\nPS b be hon hoac bang PS a"; getch(); } // Dinh Nghia Cac Ham PhanSo operator + (PhanSo a ,PhanSo b) { PhanSo c; c.TuSo=a.TuSo*b.MauSo+a.MauSo*b.TuSo; c.MauSo=a.MauSo*b.MauSo; return c; } PhanSo operator - (PhanSo a ,PhanSo b) { PhanSo c; c.TuSo=a.TuSo*b.MauSo-a.MauSo*b.TuSo; c.MauSo=a.MauSo*b.MauSo; return c; } PhanSo operator * (PhanSo a ,PhanSo b) { PhanSo c; c.TuSo=a.TuSo*b.TuSo; c.MauSo=a.MauSo*b.MauSo; return c; } PhanSo operator / (PhanSo a ,PhanSo b) Ngành CNTT - Trường CĐ Công Nghệ Thông Tin Page 4
- Bài Báo Cáo Thực Hành Môn Học : Lập Trình Hướng Đối Tượng C++ { 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<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==b.TuSo*a.MauSo) return 1; else return 0; } int operator != (PhanSo a ,PhanSo b) Ngành CNTT - Trường CĐ Công Nghệ Thông Tin Page 5
- Bài Báo Cáo Thực Hành Môn Học : Lập Trình Hướng Đối Tượng C++ { 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 >x; tam.thuc=x; cout >y; tam.ao=y; return tam; } void display(sophuc a) { cout<<"("<<a.thuc<<","<<a.ao<<")"<<endl; } Ngành CNTT - Trường CĐ Công Nghệ Thông Tin Page 6
- Bài Báo Cáo Thực Hành Môn Học : Lập Trình Hướng Đối Tượng C++ 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; Ngành CNTT - Trường CĐ Công Nghệ Thông Tin Page 7
- Bài Báo Cáo Thực Hành Môn Học : Lập Trình Hướng Đối Tượng C++ 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"; Ngành CNTT - Trường CĐ Công Nghệ Thông Tin Page 8
- Bài Báo Cáo Thực Hành Môn Học : Lập Trình Hướng Đối Tượng C++ cout >ten; cout >toan; cout >ly; cout >hoa; dtb=(toan+ly+hoa)/3; } void sinhvien::xuat() { cout<<"\nten sinh vien :"<<ten; cout<<"\ndiem trung binh :"<<dtb<<"\n"; } void main() { clrscr(); int i,j; sinhvien a[10]; for(i=0;i<=9;i++) //nhap thong tin 10 sinh vien { a[i].nhap(); } for(i=0;i<=9;i++) //sap xep theo diem trung binh giam dan for(j=i+1;j<=10;j++) if((a[i].dtb)<(a[j].dtb)) { float c; char *tam; c=a[i].dtb; tam=a[i].ten; a[i].dtb=a[j].dtb; a[i].ten=a[j].ten; a[j].dtb=c; a[j].ten=tam; } cout<<"3 SV co diem trung binh cao nhat la : \n"; for(i=0;i<=2;i++) //in ra man hinh 3 sinh vien co dtb cao nhat a[i].xuat(); getch(); } Ngành CNTT - Trường CĐ Công Nghệ Thông Tin Page 9
- Bài Báo Cáo Thực Hành Môn Học : Lập Trình Hướng Đối Tượng C++ Câu 5: class hcnhat { private: int chdai,chrong; public: void nhap(); int chuvi(); int dientich(); void xuat(); }; void hcnhat::nhap() { cout >chdai; cout >chrong; } int hcnhat::chuvi() { return (chdai+chrong)*2; } int hcnhat::dientich() { return chdai*chrong; } void hcnhat::xuat() { cout<<"chieu dai la :"<<chdai; cout<<"\nchieu rong la :"<<chrong; cout<<"\nchu vi hcn la :"<<chuvi(); cout<<"\ndien tich hcn la :"<<dientich(); } void main() { clrscr(); hcnhat a; a.nhap(); a.xuat(); getch(); } Ngành CNTT - Trường CĐ Công Nghệ Thông Tin Page 10
- Bài Báo Cáo Thực Hành Môn Học : Lập Trình Hướng Đối Tượng C++ 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 >p1.tuso; cout >p1.mauso; cout >p2.tuso; cout >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; } Ngành CNTT - Trường CĐ Công Nghệ Thông Tin Page 11
- Bài Báo Cáo Thực Hành Môn Học : Lập Trình Hướng Đối Tượng C++ 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="<<c.tuso<<"/"<<c.mauso; cout<<"\na-b="<<t.tuso<<"/"<<t.mauso; cout<<"\na*b="<<n.tuso<<"/"<<n.mauso; cout<<"\na : b="<<ch.tuso<<"/"<<ch.mauso; } void main() { clrscr(); phanso a; a.nhap(); a.xuat(); getch(); } Ngành CNTT - Trường CĐ Công Nghệ Thông Tin Page 12
- Bài Báo Cáo Thực Hành Môn Học : Lập Trình Hướng Đối Tượng C++ Câu 7: class sophuc { private: double thuc; double ao; public: void nhap() { cout >thuc; cout >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)); Ngành CNTT - Trường CĐ Công Nghệ Thông Tin Page 13
- Bài Báo Cáo Thực Hành Môn Học : Lập Trình Hướng Đối Tượng C++ 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(); } Ngành CNTT - Trường CĐ Công Nghệ Thông Tin Page 14
- Bài Báo Cáo Thực Hành Môn Học : Lập Trình Hướng Đối Tượng C++ Câu 8: struct matran { double mt[20][20]; int n; }; ostream& operator >(istream& is,matran& x) { cout >x.n; cout >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(); Ngành CNTT - Trường CĐ Công Nghệ Thông Tin Page 15
- Bài Báo Cáo Thực Hành Môn Học : Lập Trình Hướng Đối Tượng C++ return a; } else for(i=1;i >a; cout >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["<<i<<"]["<<j<<"]="<<c.mt[i][j]; d=a-b; cout<<"\nket qua A - B :"; for(i=1;i<=a.n;++i) for(j=1;j<=a.n;++j) cout<<"\td["<<i<<"]["<<j<<"]="<<d.mt[i][j]; Ngành CNTT - Trường CĐ Công Nghệ Thông Tin Page 16
- Bài Báo Cáo Thực Hành Môn Học : Lập Trình Hướng Đối Tượng C++ e=a*b; cout >x>>y; } void xuat() { cout<<x<<","<<y; } double do_dai(point n) { return sqrt(pow(x-n.x,2)+pow(y-n.y,2)); } }; void main() { clrscr(); point a,b; double c; cout<<"\ntoa do diem a :"; a.nhap(); cout<<"\ndiem a:"; a.xuat(); cout<<"\ntoa do diem b:"; b.nhap(); cout<<"\ndiem b:"; a.xuat(); c= a.do_dai(b); cout<<" \ndo dai giua hai diem:"; cout<<c; Ngành CNTT - Trường CĐ Công Nghệ Thông Tin Page 17
- Bài Báo Cáo Thực Hành Môn Học : Lập Trình Hướng Đối Tượng C++ 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() Ngành CNTT - Trường CĐ Công Nghệ Thông Tin Page 18
- Bài Báo Cáo Thực Hành Môn Học : Lập Trình Hướng Đối Tượng C++ { 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="<<x<<" y="<<y; } }; class HINH_TRON : public DIEM { private : double r; public : HINH_TRON() { r=0.0; } Ngành CNTT - Trường CĐ Công Nghệ Thông Tin Page 19
- Bài Báo Cáo Thực Hành Môn Học : Lập Trình Hướng Đối Tượng C++ HINH_TRON(double x1,double y1,double r1):DIEM(x1,y1) { r=r1; } double getR() { return r; } }; void main() { HINH_TRON h(2.5,3.5,8); clrscr(); cout<<"\nHinh tron co tam :"; h.in(); cout<<"\nCo ban kinh ="<<h.getR(); getch(); } Câu 12: class nguoi { private: char *ten; char *diachi; int ns; // nam sinh public: nguoi() { ten=NULL; diachi=NULL; ns=0; } nguoi(char *ten1, char *diachi1, int ns1) { int n=strlen(ten1); ten =new char[n+1]; strcpy(ten,ten1); int m=strlen(diachi1); diachi =new char[m+1]; strcpy(diachi,diachi1); ns=ns1; } ~nguoi() { if((ten!=NULL)&&(diachi!=NULL)) Ngành CNTT - Trường CĐ Công Nghệ Thông Tin Page 20
- Bài Báo Cáo Thực Hành Môn Học : Lập Trình Hướng Đối Tượng C++ { delete ten; delete diachi; ns=0; } } void xuat() { cout<<"\nho va ten:"<<ten<<"\nnam sinh:"<<ns<<"\ndiachi:"<<diachi; } }; class mon_hoc { private: char*mon; int sotiet; public: mon_hoc() { mon=NULL; sotiet=0; } mon_hoc(char*mon1,int sotiet1) { int n=strlen(mon1); mon=new char[n+1]; strcpy(mon,mon1); sotiet=sotiet1; } ~mon_hoc() { if(mon!=NULL) delete mon; sotiet=0; } void xuat() { cout<<"\nTen mon hoc:"<<mon<<"\nSo tiet hoc:"<<sotiet; } }; class giao_vien:public nguoi { private: mon_hoc mh; public: giao_vien():nguoi(),mh() {} Ngành CNTT - Trường CĐ Công Nghệ Thông Tin Page 21
- Bài Báo Cáo Thực Hành Môn Học : Lập Trình Hướng Đối Tượng C++ 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 xuat(); cout nguoi::xuat(); getch(); delete b; getch(); } ___♠The End♠___ Ngành CNTT - Trường CĐ Công Nghệ Thông Tin Page 22