- Code:
#include<conio.h>
#include<stdio.h>
#include<math.h>
struct dathuc
{
int heso,somu;
dathuc()
{
heso=0;
somu=0;
}
};
void Nhapdathuc(dathuc[],int*);//Da thuc bac n;
void Xuatdathuc(dathuc[],int);
void cong(dathuc dt1[],int ,dathuc dt2[],int ,dathuc dt3[]);
//cong 2 da thuc:
//Da thuc 1: bac n;
//Da thuc 2: bac m
//tao thanh Da thuc 3, bac=max(n,m);
void Giaodien()
{
dathuc dathuc1[100],dathuc2[100],dathuc3[100];
int bacdt1=0,bacdt2=0;
int max=0;
printf("Nhap du lieu cho da thuc 1:\n");
Nhapdathuc(dathuc1,&bacdt1);
Xuatdathuc(dathuc1,bacdt1);
printf("\nNhap du lieu cho da thuc 2:\n");
Nhapdathuc(dathuc2,&bacdt2);
Xuatdathuc(dathuc2,bacdt2);
cong(dathuc1,bacdt1,dathuc2,bacdt2,dathuc3);
max=bacdt1>bacdt2?bacdt1:bacdt2;
printf("\n\nDa thuc tong: ");
Xuatdathuc(dathuc3,max);
}
int main()
{
Giaodien();
getch();
return 0;
}
void Nhapdathuc(dathuc dt[100],int* n)
{
printf("Nhap vao bac cua da thuc: ");
scanf("%d",&*n);
for(int i=*n;i>=0;i--)
{
if(i)//if(i!=0)---Neu i khong phai la he so tu do
{
printf("Nhap vao he so ung voi x^%d: ",i);
scanf("%d",&dt[i].heso);
dt[i].somu=i;
}
else
{
printf("Nhap vao he so tu do: ");
scanf("%d",&dt[i].heso);
}
}
}
void Xuatdathuc(dathuc poly[100],int n)
{
printf("\n");
printf("P(x)=");
if(n>1)
{
for(int i=n;i>=0;i--)
{
if(i>1)
{
if(i!=n)
{
if(poly[i].heso>0)
{
if(poly[i].heso!=1)
{
printf(" + %dx^%d",poly[i].heso,poly[i].somu);
}
else
printf(" + x^%d",poly[i].somu);
}
else if(poly[i].heso<0)
{
if(poly[i].heso!=-1)
{
printf("%dx^%d",poly[i].heso,poly[i].somu);
}
else
printf("x^%d",poly[i].somu);
}
}
else
{
if(poly[i].heso>0)
{
if(poly[i].heso!=1)
{
printf("%dx^%d",poly[i].heso,poly[i].somu);
}
else
printf("x^%d",poly[i].somu);
}
else if(poly[i].heso!=-1)
{
printf("%dx^%d",poly[i].heso,poly[i].somu);
}
else
printf(" - x^%d",poly[i].somu);
}
}else if(i==1)
{
if(poly[i].heso>0)
{
if(poly[i].heso!=1)
printf(" + %dx",poly[i].heso);
else
printf(" + x");
}
else if(poly[i].heso<0)
{
if(poly[i].heso!=-1)
printf(" - %dx",poly[i].heso);
else
printf(" - x");
}
}
else//i=0
{
if(poly[i].heso)//Neu he so tu do khac 0
if(poly[i].heso>0)
printf(" + %d",poly[i].heso);
else
printf("%d",poly[i].heso);
//else-khong lam gi ca.
}
}
}
else if(n)
{
for(int i=n;i>=0;i--)
{
if(i)
{
if(poly[i].heso>0)
if(poly[i].heso!=1)
printf("%dx",poly[i].heso);
else
printf("x");
else if(poly[i].heso<0)
{
if(poly[i].heso!=-1)
printf("%dx",poly[i].heso);
else
printf(" - x");
}
}
else
{
if(poly[i].heso)//Neu he so tu do khac 0
{
if(poly[i].heso>0)
printf(" + %d",poly[i].heso);
else
printf("%d",poly[i].heso);
}
}
}
}
else//Da thuc bac 0. Vd: P(x)=3 (voi moi x);
{
for(int i=n;i>=0;i--)
if(poly[i].heso)
printf("%d",poly[i].heso);
}
}
void cong(dathuc dt1[100],int m,dathuc dt2[100],int n,dathuc dt3[100])
{
int max,min;
max=m>n?m:n;
min=m>n?n:m;
if(max==m)
{
int flag=0;
for(int i=max;i>=0;i--)
{
for(int j=min;j>=0;j--)
{
if(dt1[i].somu==dt2[j].somu)
{
dt3[i].heso=dt1[i].heso+dt2[j].heso;
dt3[i].somu=i;
flag=1;
break;
}
}
if(!flag)
{
dt3[i].heso=dt1[i].heso;
dt3[i].somu=i;
}
}
}
else
{
int flag=0;
for(int i=max;i>=0;i--)
{
for(int j=min;j>=0;j--)
{
if(dt2[i].somu==dt1[j].somu)
{
dt3[i].heso=dt2[i].heso+dt1[j].heso;
dt3[i].somu=i;
flag=1;
break;
}
}
if(!flag)
{
dt3[i].heso=dt2[i].heso;
dt3[i].somu=i;
}
}
}
}
2 posters
Tổng hai đa thức
Vy Thanh Định- Web Master
- Giới tính : Bài gửi : 228
Tổng Điểm : 544
Điểm Thưởng : 16
Sinh Nhật : 19/05/1990 Bị Dụ Dỗ : 11/09/2009
Tuổi : 34
- Post n°1
Tổng hai đa thức
kocogi- Member
- Giới tính : Bài gửi : 22
Tổng Điểm : 24
Điểm Thưởng : 0
Sinh Nhật : 18/03/1990 Bị Dụ Dỗ : 26/11/2009
Tuổi : 34
- Post n°2
Re: Tổng hai đa thức
viết gì dài thế đại ka. :O.
Vy Thanh Định- Web Master
- Giới tính : Bài gửi : 228
Tổng Điểm : 544
Điểm Thưởng : 16
Sinh Nhật : 19/05/1990 Bị Dụ Dỗ : 11/09/2009
Tuổi : 34
- Post n°3
Re: Tổng hai đa thức
bài này lâu rùi có làm lại một bài rùi mà