Ngôn ngữ lập trình c&c++ ( Phạm Hồng Thái) P33 - Pdf 72

Chương 8. Hàm bạn, định nghĩa phép toán cho lớp
return os;
}
istream& operator>> (istream& is,PS &p)
{
cout << "\n Nhap tu va mau: '' ;
is >> p.a >> p.b ;
return is;
}
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;
x=uscln(p.a,p.b);
q.a = p.a / x ;
q.b = p.b/ x ;
return q;
}
PS operator+(PS p1, PS p2)
{

{
PS p, q, z, u, v ;
PS s;
cout <<"\nNhap cac PS p, q, z, u, v: '' ;
cin >> p >> q >> z >> u >> v ;
s = (p - q*z) / (u + v) ;
cout << "\n Phan so s = " << s;
getch();
}

270
Chương 8. Hàm bạn, định nghĩa phép toán cho lớp
Ví dụ 2
: Chương trình đưa vào các hàm toán tử:
operator- có một đối dùng để đảo dấu một đa thức
operator+ có 2 đối dùng để cộng 2 đa thức
operator- có 2 đối dùng để trừ 2 đa thức
operator* có 2 đối dùng để nhân 2 đa thức
operator^có 2 đối dùng để tính giá đa thức tại x
ơperator<< có 2 đối dùng để in đa thức
ơperator>> có 2 đối dùng để nhập đa thức
Chương trình sẽ nhập 4 đa thức: p, q, r, s. Sau đó tính đa thức: f = -(p+q)*(r-s)
Cuối cùng tính giá trị f(x), với x là một số thực nhập từ bàn phím.
#include <conio.h>
#include <iostream.h>
#include <math.h>
struct DT
{
double a[20];// Mang chua cac he so da thuc a0, a1,...
int n ;// Bac da thuc

DT operator-(const DT& d)
{
DT p;
p.n = d.n;
for (int i=0 ;i<=d.n ;++i)
p.a[i] = -d.a[i];
return p;
}
DT operator+(DT d1, DT d2)
{
DT d;
int k,i;
k = d1.n > d2.n ? d1.n : d2.n ;
for (i=0;i<=k ;++i)
if (i<=d1.n && i<=d2.n) d.a[i] = d1.a[i] + d2.a[i];
else if (i<=d1.n) d.a[i] = d1.a[i];
else d.a[i] = d2.a[i];
i = k;
while (i>0 && d.a[i]==0.0) --i;

272
Chương 8. Hàm bạn, định nghĩa phép toán cho lớp
d.n=i;
return d ;
}
DT operator-(DT d1, DT d2)
{
return (d1 + (-d2));
}
DT operator*(DT d1 , DT d2)


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status