BT Về Lập trình hướng đối tượng (Mở đầu)
1. Xây dựng lớp phân số gồm các thành phần:
-DL: tử số, mẫu số
-Pt: nhập, in, tối giản, so sánh 2 ps
Hàm main:
-Nhập mảng có n phân số (n<=10)
-Sắp xếp mảng PS theo thứ tự giảm dần
-In mảng sau khi xếp
Code:
#include<iostream.h>
#include<iomanip.h>
#include<conio.h>
#include<math.h>
int uc(int a,int b)
{
if (a*b==0)
return 1;
else
{
while (a!=b)
{
if (a>b)
a=a-b;
else
b=b-a;
}
return a;
}
}
class PS
{
private:
int t;
int m;
public:
PS()
{
t=0;
m=1;
}
friend ostream& operator<< (ostream& os,PS x)
{
os<< x.t << "/" << x.m;
return os;
}
friend istream& operator>> (istream& is,PS &x)
{
cout<<"Nhap tu: ";
is>>x.t;
cout<<"Nhap mau: ";
is>>x.m;
return is;
}
PS operator+(PS b)
{
PS c;
c.t=t*b.m+m*b.t;
c.m=m*b.m;
return tg(c);
}
PS operator-(PS b)
{
PS c;
c.t = t*b.m-m*b.t;
c.m = m*b.m;
return tg(c);
}
PS operator*(PS b)
{
PS c;
c.t = t*b.t;
c.m=m*b.m;
return tg(c);
}
PS operator/(PS b)
{
PS c;
c.t=t*b.m;
c.m = m*b.t;
return tg(c);
}
PS tg(PS x)
{
int s = uc(x.t,x.m);
x.t=x.t/s;
x.m=x.m/s;
return x;
}
int operator>(PS x)
{
return (((t*x.m-m*x.t)*m*x.m)>0);
}
};
void main()
{
clrscr();
int n;
PS temp;
cout<<"Nhap so phan so :\n";
cin>>n;
PS *p = new PS[n+1];
for (int i=1;i<=n;i++)
{
cout<<"Nhap phan so thu "<<i<<" :\n";
cin>>p[i];
}
cout<<"Mang phan so :\n";
for (i=1;i<=n;i++)
cout<<p[i]<<" ";
cout<<"\n";
for (int j=1;j<n;j++)
for (int k = j+1;k<=n;k++)
if (p[k]>p[j])
{
temp = p[k];
p[k] = p[j];
p[j] = temp;
}
cout<<"Mang phan so sau khi sap xep :\n";
for (i=1;i<=n;i++)
cout<<p[i]<<" ";
getch();
}
0 Response to "BT Về Lập trình hướng đối tượng (Mở đầu)"
Đăng nhận xét