Professional Documents
Culture Documents
Xulidathuc
Xulidathuc
h>
using namespace std;
const int MAX = 1000;
struct DonThuc{
float heso;
int bac;
};
struct DaThuc{
DonThuc p[MAX];
int count;
};
void NhapDonThuc(DonThuc &p){
cout << "Nhap He So : "; cin >> p.heso;
cout << "Nhap Bac : "; cin >> p.bac;
}
void NhapDaThuc(DaThuc &u){
DonThuc d;
u.count = 0;
do{
NhapDonThuc(d);
if(d.heso != 0){
u.p[u.count] = d;
u.count++;
}
}while(d.heso != 0);
}
}
void SuaDonThuc(DaThuc &u,int vitrisua, DonThuc dtmoi){
if(u.count <= 0) return;
for(int i = 0; i < u.count; i++){
if(i == vitrisua){
u.p[i] = dtmoi;
}
}
}
void RutGon(DaThuc &u){
SapXep(u);
for(int i = 0; i < u.count; i++){
if(u.p[i].bac == u.p[i+1].bac){
u.p[i].heso += u.p[i+1].heso;
XoaDonThuc(u,i+1);
}
}
SapXep(u);
}
void cong2dt(DaThuc u, DaThuc q, DaThuc &t){
if(u.count <= 0 && q.count <= 0) return;
RutGon(u);
RutGon(q);
t.count = 0;
for(int i = 0 ; i < u.count; i++){
t.p[t.count] = u.p[i];
t.count++;
}
for(int i = 0 ; i < q.count; i++){
t.p[t.count] = q.p[i];
t.count++;
}
RutGon(t);
}
int main(){
DaThuc q,p,t;
cout << "Nhap Q(x)=" << endl;
NhapDaThuc(q);
cout << "Nhap P(x)=" << endl;
NhapDaThuc(p);
cong2dt(q,p,t);
cout << "T(x)=";
XuatDaThuc(t);
return 0;