Dùng operator các bạn có thể tính toán trên các đối tượng sử dụng
struct như phân số, số phức, ma trận như trên các con số kiểu int,
float, cách diễn đạt tự nhiên theo ngôn ngữ toán học, kết hợp nhiều
phép toán trong biểu thức. vd như các bạn có 3 phân số A,B,C, mà muốn
kết hợp thành 1 biểu thức như: D= (A+B)/C thì chỉ cần viết y nguyên
D=(A+B)/C.
Nếu ko dùng operator phải gọi nhiều lần các hàm rất mất công.
struct như phân số, số phức, ma trận như trên các con số kiểu int,
float, cách diễn đạt tự nhiên theo ngôn ngữ toán học, kết hợp nhiều
phép toán trong biểu thức. vd như các bạn có 3 phân số A,B,C, mà muốn
kết hợp thành 1 biểu thức như: D= (A+B)/C thì chỉ cần viết y nguyên
D=(A+B)/C.
Nếu ko dùng operator phải gọi nhiều lần các hàm rất mất công.
- Code:
#include<iostream.h>
#include<math.h>
struct SoPhuc
{
int iThuc;
int iAo;
};
void Nhap(int &thuc,int &ao)
{
cout<<"Nhap phan thuc:";
cin>>thuc;
cout<<"Nhap phan ao:";
cin>>ao;
}
void Xuat(int thuc,int ao)
{
cout<<"c = "<<thuc<<" + ("<<ao<<")i\n";
}
SoPhuc operator +(const SoPhuc &a,const SoPhuc &b)
{
SoPhuc c;
c.iThuc=a.iThuc+b.iThuc;
c.iAo=a.iAo+b.iAo;
return c;
}
SoPhuc operator -(const SoPhuc &a,const SoPhuc &b)
{
SoPhuc c;
c.iThuc = a.iThuc - b.iThuc;
c.iAo = a.iAo - b.iAo;
return c;
}
//Z1 * Z2 = (X1X2 - Y1Y2) + i(X2Y1 - X1Y2)
SoPhuc operator *(const SoPhuc &a,const SoPhuc &b)
{
SoPhuc c;
c.iThuc = a.iThuc * b.iThuc - a.iAo * b.iAo;
c.iAo = b.iThuc * a.iAo - a.iThuc * b.iAo;
return c;
}
//ao=(x2y1-x1y2)/x2x2+y2y2
SoPhuc operator /(const SoPhuc &a,const SoPhuc &b)
{
SoPhuc c;
c.iThuc = (a.iThuc * b.iThuc + a.iAo * b.iAo) / (b.iThuc*b.iThuc + b.iAo*b.iAo);
c.iAo = (b.iThuc*a.iAo - a.iThuc*b.iAo) / (b.iThuc*b.iThuc + b.iAo*b.iAo);
return c;
}
void main()
{
SoPhuc a,b,c;
cout<<"Nhap so phuc a:\n";
Nhap(a.iThuc,a.iAo);
cout<<"Nhap so phuc b:\n";
Nhap(b.iThuc,b.iAo);
c=a+b;
cout<<"\n+ Phep cong:\n";
Xuat(c.iThuc,c.iAo);
c=a-b;
cout<<"\n+ Phep tru:\n";
Xuat(c.iThuc,c.iAo);
c=a*b;
cout<<"\n+ Phep nhan:\n";
Xuat(c.iThuc,c.iAo);
c=a/b;
cout<<"\n+ Phep chia:\n";
Xuat(c.iThuc,c.iAo);
}