Ví dụ 1: Đối với các phép toán phân số: cộng, trừ, nhân, chia hai phân số
PS pstong = Cong(p, q);//Dùng hàm làm tính toán không được tự nhiên và dài dòng
--> Ở ví dụ 2 dùng chồng toán tử nên cách viết đơn giản hơn:
PS pstong = p + q;//Cách ghi đơn giản hoa
Ví dụ 2: Sử dụng chồng toán tử đối với các phép toán trên phân số:
Xem them vi du o day: http://www.cplusplus.com/doc/tutorial/templates/
Ví dụ 3: nhân hai ma trận
Két luận:
PS pstong = Cong(p, q);//Dùng hàm làm tính toán không được tự nhiên và dài dòng
--> Ở ví dụ 2 dùng chồng toán tử nên cách viết đơn giản hơn:
PS pstong = p + q;//Cách ghi đơn giản hoa
#include <iostream>
using namespace
std;
struct PS
{
int a, b;
};
void NhapPhanSo(PS *p);
void InPhanSo(PS p);
int USCLN(int
x, int y);
PS RutGon(PS p);
PS Cong(PS p1, PS p2);
PS Nhan(PS p1, PS p2);
PS Chia(PS p1, PS p2);
void NhapPhanSo(PS *p)
{
int t, m;
printf("\nTu va mau:");
scanf_s("%d%d", &t, &m);
p->a = t;
p->b = m;
}
void InPhanSo(PS p)
{
printf("\n%d/%d",p.a, p.b);
}
int USCLN(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;
}
PS RutGon(PS p)
{
PS q;
int x = USCLN(p.a, p.b);
q.a = p.a/x;
q.b = p.b/x;
return q;
}
PS Cong(PS p1, PS p2)
{
PS q;
q.a = p1.a * p2.b
+ p1.b * p2.a;
q.b = p1.b * p2.b;
return RutGon(q);
}
PS Nhan(PS p1, PS p2)
{
PS q;
q.a = p1.a * p2.a;
q.b = p1.b * p2.b;
return RutGon(q);
}
PS Chia(PS p1, PS p2)
{
PS q;
q.a = p1.a * p2.b;
q.b = p1.b * p2.a;
return RutGon(q);
}
void main()
{
PS p, q, pstong;
printf("\nNhap phan so p:");
NhapPhanSo(&p);
printf("\nNhap phan so q:");
NhapPhanSo(&q);
pstong = Cong(p,
q);// Dùng hàm làm tính toán không được tự nhiên và
dài dòng
//
Ta sẽ dùng Operator để cài đặt lại các phép toán
InPhanSo(pstong);
getchar();
getchar();
}
Ví dụ 2: Sử dụng chồng toán tử đối với các phép toán trên phân số:
#include <iostream>
using namespace
std;
struct PS
{
int a, b;
};
void NhapPhanSo(PS *p);
void InPhanSo(PS p);
int USCLN(int
x, int y);
PS RutGon(PS p);
PS operator+(PS p1, PS p2);//p1 + p2
PS operator-(PS p1, PS p2);//p1 - p2
PS operator*(PS p1, PS p2);//p1 * p2
PS operator/(PS p1, PS p2);//p1 / p2
void NhapPhanSo(PS *p)
{
int t, m;
printf("\nTu va mau:");
scanf_s("%d%d", &t, &m);
p->a = t;
p->b = m;
}
void InPhanSo(PS p)
{
printf("\n%d/%d",p.a, p.b);
}
int USCLN(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;
}
PS RutGon(PS p)
{
PS q;
int x = USCLN(p.a, p.b);
q.a = p.a/x;
q.b = p.b/x;
return q;
}
PS operator+(PS p1, PS p2)//p1 + p2
{
PS q;
q.a = p1.a * p2.b
+ p1.b * p2.a;
q.b = p1.b * p2.b;
return RutGon(q);
}
PS operator-(PS p1, PS p2)//p1 - p2
{
PS q;
q.a = p1.a * p2.b
- p1.b * p2.a;
q.b = p1.b * p2.b;
return RutGon(q);
}
PS operator*(PS p1, PS p2)//p1 * p2
{
PS q;
q.a = p1.a * p2.a;
q.b = p1.b * p2.b;
return RutGon(q);
}
PS operator/(PS p1, PS p2)//p1 / p2
{
PS q;
q.a = p1.a * p2.b;
q.b = p1.b * p2.a;
return RutGon(q);
}
void main()
{
PS p, q, psTong,
psTich;
printf("\nNhap phan so p:");
NhapPhanSo(&p);
printf("\nNhap phan so q:");
NhapPhanSo(&q);
psTong = p + q;//Dùng Operator để cài đặt lại các phép toán
InPhanSo(psTong);
psTich = p * q;
InPhanSo(psTich);
getchar();
getchar();
}
Xem them vi du o day: http://www.cplusplus.com/doc/tutorial/templates/
Ví dụ 3: nhân hai ma trận
Két luận: