Đề bài : ThucHanh09_Class_GioiThieu.pdf
Cài đặt lớp SoHuuTi để biểu diễn một số hữu tỉ có dạng phân số a/b trong đó a là tử số , b là mẫu số (khác 0), và a,b là nguyên tố cùng nhau. Sử dụng khung chương trình định nghĩa để hoàn thiện định nghĩa các dữ liệu và hàm thành viên. ( SoHuuTi.cpp )
Sau đó tạo 1 mảng ngẫu ngiên các đối tượng kiểu SoHuuTi rồi sắp xếp theo thứ tự giảm dần.
____________________________________________________________________
Code : http://pastebin.com/S0yVy1AH hoặc SoHuuTi -bai2.cpp
____________________________________________________________________
#include <cstdlib>
#include <iostream>
using namespace std;
class SoHuuTi
{
public:
SoHuuTi();
~SoHuuTi();
void setSoHuuTi(int, int);
void inSoHuuTi();
void congSoHuuTi(const SoHuuTi&);
void truSoHuuTi(const SoHuuTi&);
void nhanSoHuuTi(const SoHuuTi&);
void chiaSoHuuTi(const SoHuuTi&);
bool soSanhSoHuuTi(const SoHuuTi&);
private:
int tu;
int mau;
void quyChuanSoHuuTi();
};
SoHuuTi::SoHuuTi()
{
tu= rand();
mau= rand()+1;
}
SoHuuTi::~SoHuuTi()
{
}
void SoHuuTi::setSoHuuTi(int tu, int mau)
{
this->tu= tu;
this->mau= mau;
}
void SoHuuTi::inSoHuuTi()
{
this->quyChuanSoHuuTi();
cout << tu << "/" << mau;
cout << endl;
}
void SoHuuTi::congSoHuuTi(const SoHuuTi& a)
{
tu= tu*a.mau + a.tu*mau;
mau= mau * a.mau;
quyChuanSoHuuTi();
}
void SoHuuTi::truSoHuuTi(const SoHuuTi& a)
{
tu= tu*a.mau - a.tu*mau;
mau= mau * a.mau;
quyChuanSoHuuTi();
}
void SoHuuTi::nhanSoHuuTi(const SoHuuTi& a)
{
tu= tu * a.tu;
mau= mau * a.mau;
quyChuanSoHuuTi();
}
void SoHuuTi::chiaSoHuuTi(const SoHuuTi& a)
{
tu= tu * a.mau;
mau= mau * a.tu;
quyChuanSoHuuTi();
}
void SoHuuTi::quyChuanSoHuuTi()
{
int x= tu;
int y= mau;
while ( x!=y )
{
if ( x>y ) x-=y;
else y-= x;
}
tu= tu/x;
mau= mau/x;
}
bool SoHuuTi::soSanhSoHuuTi(const SoHuuTi& a)
{
if ( tu * a.mau >= a.tu * mau ) return true;
else return false;
}
void sapXepSoHuuTi(SoHuuTi *c,int x)
{
int a,b;
SoHuuTi tam;
x= rand()% 20 + 2;
cout << "Tao day ngau nhien: " << endl;
for ( int i=0; i<x; i++ )
{
a= rand()%20;
b= rand()%20 + 1;
c[i].setSoHuuTi(a, b);
c[i].inSoHuuTi();
}
for ( int i=0; i<x; i++ )
{
for (int j=i+1; j<x; j++)
{
if ( c[j].soSanhSoHuuTi(c[i]) )
{
tam= c[i];
c[i]= c[j];
c[j]= tam;
}
}
}
cout << "Day dc sap xep tu LON den NHO:" << endl;
for ( int i=0; i<x; i++ )
{
c[i].inSoHuuTi();
}
}
int main()
{
srand( time(0));
SoHuuTi a,b;
a.setSoHuuTi(3,4);
a.inSoHuuTi();
b.setSoHuuTi(2,4);
b.inSoHuuTi();
int x;
SoHuuTi c[20];
sapXepSoHuuTi(c,x);
cout << endl;
system("PAUSE");
return EXIT_SUCCESS;
}