Ôn tập lập trình hướng đối tượng
43. Định nghĩa một lớp có tên là
Complex để biểu diễn các số phức. Một số phức có hình thức tổng quát là a
+ b*j, trong đó a là phần thực và b là phần ảo.
Xây dựng các hàm tạo cần thiết cho lớp số complex.
Xây dựng hàm nhập giá trị và in ra màn hình dạng tổng quát cho đối tượng số phức.
Các quy luật toán học trên số phức như sau:
(a + b*j) + (c +d*j) = (a + c) + (b + d)*j
(a + b*j) - (c + d*j) =(a + c) - (b + d)*j
(a + b*j) * (c + d*j) = (ac - bd) + (bc + ad)*j
Định nghĩa các thao tác này như là các hàm thành viên của lớp Complex.Viết chương trình nhập vào 2 số phức in ra màn hình giá trị tổng, tích và hiệu của chúng.#include<iostream.h>
class complex{int thuc,ao;
public:
complex(){thuc=ao=0;}
complex(int a){thuc=a;ao=0;}
complex(int a,int b){thuc=a;ao=b;}
void nhap(){cout<<"nhap phan thuc:";cin>>thuc;
cout<<"nhap phan ao:";cin>>ao;
}
void xuat()
{cout<
if(ao>=0)cout<<"+"<
else cout<
}
//Tong:(a + b*j) + (c +d*j) = (a + c) + (b + d)*j
friend complex tong(complex a,complex b)
{complex c;
c.thuc=a.thuc+b.thuc;
c.ao=a.ao+b.ao;
return c;
}
//Hieu:(a + b*j) - (c + d*j) =(a + c) - (b + d)*j
friend complex hieu(complex a,complex b)
{complex c;
c.thuc=a.thuc+b.thuc;
c.ao=-(a.ao+b.ao);
return c;
}
//Tich:(a + b*j) * (c + d*j) = (ac - bd) + (bc + ad)*j
friend complex tich(complex a,complex b)
{complex c;
c.thuc=a.thuc*b.thuc-a.ao*b.ao;
c.ao=a.ao*b.thuc+a.thuc*b.ao;
return c;
}
};
main()
{complex ob,ob1,t,h,ob2;
cout<<"Nhap so phuc thu 1:\n";ob.nhap();
cout<<"So phuc thu 1:"; ob.xuat();
cout<
cout<<"Nhap so phuc thu 2:\n"; ob1.nhap();
cout<<"So phuc thu 2:"; ob1.xuat();
cout<
//tong hai so phuc
t=tong(ob,ob1);
cout<<"tong hai so phuc:";t.xuat();
h=hieu(ob,ob1);
cout<<"\nHieu hai so phuc:";h.xuat();
ob2=tich(ob,ob1);
cout<<"\ntich so phuc 1 va so phuc 2:";ob2.xuat();
return 0;}
44. Định nghĩa một lớp point để biểu diễn một tọa độ. Một tọa độ có dạng tổng quát là (x,y). x là hoành độ, y là tung độ.
Xây dựng các hàm tạo cần thiết cho lớp point.
Xây dựng các hàm nhập giá trị và in hình thức tổng quát của một tọa độ ra màn hình.
Xây dựng các hàm thành viên để cộng trừ hai tọa độ.
Viết chương trình nhập vào 2 tọa độ in ra màn hình giá trị tổng và hiệu của chúng.#include
class toado{
int x,y;
public:
//khoi tao khong doi so
toado(){x=y=0;}
//khoi tao mot doi so
toado(int a){x=a;y=0;}
//khoi tao hai doi so
toado(int a,int b){x=a;y=b;}
void nhap(){cout<<"nhap x:";cin>>x;
cout<<"nhap y:";cin>>y;
}
void xuat(){cout<<"toa do:("<
toado cong(toado a,toado b)
{toado c;
c.x=a.x+b.x;
c.y=a.y+b.y;
return c;
}
toado hieu(toado a,toado b)
{toado c;
c.x=a.x-b.x;
c.y=a.y-b.y;
return c;
}
};
main()
{toado ob1,ob2,ob3,ob4;
cout<<"toa do 1\n";ob1.nhap();ob1.xuat();
cout<<"\ntoa do 2:\n";ob2.nhap();ob2.xuat();
//goi ham cong hai toa do
ob3=ob3.cong(ob1,ob2);
cout<<"\ntong hai toa do:";ob3.xuat();
ob4=ob4.hieu(ob1,ob2);
cout<<"\nhieu hai toa do:";ob4.xuat();
return 0;
}
45.
Định nghĩa lớp fraction để biểu diễn cho một phân số. xây dựng các hàm
thành viên cho lớp fraction để thực hiện các yêu cầu sau:
- Khởi tạo giá trị cho các thành viên dữ liệu của phân số.
- Nhập giá trị cho các thành viên của phân số
- In ra màn hình giá trị phân số theo dạng “tử-số/mẫu-số”.
- Cộng, trừ, nhân và chia hai phân số.
- Tối giản phân số
Viết chương trình nhập vào 2 phân số in ra màn hình giá tổng, hiệu và phân số dạng tối giản của chúng.#include
class phanso
{int tu,mau;
public:
phanso(){tu=mau=0;}
phanso(int a,int b){tu=a;mau=b;}
void nhap()
{cout<<"nhap tu so:";cin>>tu;
cout<<"nhap mau so:";cin>>mau;
}
void xuat()
{if(tu==mau)
cout<<"phan so:1";
else
cout<<"phan so:"<
}
phanso cong(phanso a,phanso b)
{phanso c;
c.tu=a.tu*b.mau+b.tu*a.mau;
c.mau=a.mau*b.mau;
return c;
}
phanso tru(phanso a,phanso b)
{phanso c;
c.tu=a.tu*b.mau-b.tu*a.mau;
c.mau=a.mau*b.mau;
return c;
}
phanso nhan(phanso a,phanso b)
{phanso c;
c.tu=a.tu*b.tu;
c.mau=a.mau*b.mau;
return c;
}
phanso chia(phanso a,phanso b)
{phanso c;
c.tu=a.tu*b.mau;
c.mau=a.mau*b.tu;
return c;
}
//tim uoc so chung lon nhat
int uscln(int m,int n)
{while (n!=0)
{int du=m%n;
m=n;
n=du;
}
return m;
}
void toigian()
{int us=uscln(tu,mau);
tu=tu/us;
mau=mau/us;
}
};
main()
{phanso ob1,ob2,ob3;
ob1.nhap();
ob2.nhap();
ob3=ob3.cong(ob1,ob2);
ob3.toigian();
ob3.xuat();
return 0;
}
46. Hãy quá tải các toán tử nhập (cin>>), xuất (cout<<), cộng (+), trừ(- ) và nhân (*) cho lớp complex ở câu 43.
//46#include
class complex{int thuc,ao;
public:
complex(){thuc=ao=0;}
complex(int a){thuc=a;ao=0;}
complex(int a,int b){thuc=a;ao=b;}
//qua tai toan tu nhap phan so
friend istream &operator>>(istream &is,complex &ob)
{cout<<"nhap phan thuc:";is>>ob.thuc;
cout<<"nhap phan ao:";is>>ob.ao;
return is;
}
//qua tai toan tu xuat
friend ostream &operator<<(ostream &os,complex ob)
{os<
if(ob.ao>=0)cout<<"+"<
else os<
return os;
}
//Tong:(a + b*j) + (c +d*j) = (a + c) + (b + d)*j
//qua tai toan tu cong
complex operator+(complex a)
{thuc=thuc+a.thuc;
ao=ao+a.ao;
return *this;
}
//Hieu:(a + b*j) - (c + d*j) =(a + c) - (b + d)*j
//qua tai toan tu -
complex operator-(complex a)
{thuc=thuc+a.thuc;
ao=-(ao+a.ao);
return *this;
}
//Tich:(a + b*j) * (c + d*j) = (ac - bd) + (bc + ad)*j
//qua tai toan tu *
complex operator*(complex a)
{thuc=thuc*a.thuc-ao*a.ao;
ao=ao*a.thuc+thuc*a.ao;
return *this;
}
};
main()
{complex ob,ob1,t,h,ob2;
cout<<"Nhap so phuc thu 1:\n";cin>>ob;
cout<<"So phuc thu 1:"; cout<
cout<
cout<<"Nhap so phuc thu 2:\n"; cin>>ob1;
cout<<"So phuc thu 2:"; cout<
cout<
//tong hai so phuc
t=ob+ob1;
cout<<"tong hai so phuc:";cout<
h=ob-ob1;
cout<<"\nHieu hai so phuc:";cout<
ob2=ob*ob1;
cout<<"\ntich so phuc 1 va so phuc 2:";cout<
return 0;}
49.
Xây dựng matrix để biểu diễn cho lớp ma trận. xây dựng các hàm thành
viên để nhập giá trị và in giá trị ma trận ra màn hình.Hãy quá tải các
toán tử cộng (+), trừ (-), nhân(*) và gán cho lớp ma
trận
#include
class matran
{int d,c,a[10][10];
public:
matran(){d=c=0;}
matran(int a,int b){d=a;c=b;}
void nhap()
{do{
cout<<"nhap so dong:";cin>>d;
cout<<"nhap so cot:";cin>>c;
}
while(d<=0||c<=0||d>10||c>10);
for(int i=0;i<d;i++)
for(int j=0;j
{cout<<"nhap phan tu:a["<
cin>>a[i][j];
}
}
void xuat()
{for(int i=0;i
{for(int j=0;j
cout<
cout<
}
}
//qua tai toan tu +
matran operator+(matran ob)
{matran tam;
if((d==ob.d) && (c==ob.c))
{tam.d=ob.d;
tam.c=ob.c;
for(int i=0;i
for(int j=0;j
tam.a[i][j]=a[i][j]+ob.a[i][j];
}
else {tam.d=0;tam.c=0;}
return tam;
}
//qua tai toan tu *
matran operator*(matran ob)
{matran tam;
if(c==ob.d)
{tam.d=d;
tam.c=ob.c;
for(int i=0;i
for(int j=0;j
{tam.a[i][j]=0;
for(int k=0;k
tam.a[i][j]=tam.a[i][j]+a[i][k]*ob.a[k][j];
}
}
else{tam.c=0;tam.d=0;}
return tam;
}
//gan hai ma tran
matran operator=(matran ob)
{d=ob.d;
c=ob.c;
for(int i=0;i
for(int j=0;j
a[i][j]=ob.a[i][j];
return *this;
}
};
main()
{matran ob1,ob2,ob3,ob4;
cout<<"nhap ma tran thu nhat:"<
ob1.nhap();
cout<<"ma tran vua nhap:"<
ob1.xuat();
cout<<"nhap ma tran thu hai:"<
ob2.nhap();
cout<<"ma tran vua nhap:"<
ob2.xuat();
cout<<"nhan hai ma tran:"<
ob3=ob1*ob2;
ob3.xuat();
cout<<"cong hai ma tran:"<
ob3=ob1+ob2;
ob3.xuat();
cout<<"gan bang ma tran thu nhat:"<
ob4=ob1;
ob4.xuat();
return 0;
}