多项式乘法的实现,结果总是不对
# include<stdio.h> # include<stdlib.h> struct std { int coef; int expn; } node[1000];
void printpoly(struct std node[],int n)
{ int i; printf("duoxiangshi jiangxu pailiewei:\nY="); if(n==0) printf("0"); for(i=n;i>=1;i--) { if(i!=n&&node[i].coef>0) printf("+"); printf("%dX^%d",node[i].coef,node[i].expn); }printf("\n"); } int sortpoly(struct std node[],int n)
{ int i,j,k,m,t; float q,p; struct std node0[1]; for(i=1;i<=n-1;i++) for(j=i+1;j<=n;j++) { if((node[i].expn)>(node[j].expn)) { node0[0]=node[i];node[i]=node[j];node[j]=node0[0]; } } for(i=1;i<=n;i++) { for(j=i+1;j<=n;j++) { if(node[i].expn==node[j].expn) { node[i].coef=node[i].coef+node[j].coef; for(m=j;m<=n-1;m++) node[m]=node[m+1]; n--; j--; if(node[i].coef==0) { for(t=i;t<=n-1;t++) node[t]=node[t+1]; n--; }
} } }
} void creatpoly(struct std node[],int n) { int i; printf("qingyici shuru meiyixiang de xishu zhishu:\n"); for(i=1;i<=n;i++) scanf("%d %d",&node[i].coef,&node[i].expn); }
void mulpoly(struct std node1[],struct std node2[],struct std node3[],int n1,int n2) { int i,j,k=1; if(n1==0||n2==0) {node3[0].coef=0;node3[1].coef=0;} else { for(i=1;i<=n1;i++) for(j=1;j<=n2;j++) { node3[k].coef=node1[i].coef*node2[j].coef; node3[k].expn=node1[i].expn+node2[j].expn; k=k+1; } } } void main() { int n,m,p,a,b; struct std node1[1000],node2[1000],node3[1000]; printf("qingshuru duoxiangshi de xiangshu:\n"); scanf("%d",&n);
printf("qingshuru diyige duoxiangshi:\n"); creatpoly(node1,n); a=p=sortpoly(node1,n);
printf("qing shuru dierge duoxiangshi:\n"); printf("qingshuru duoxiang shi de xiangshu:\n"); scanf("%d",&m); creatpoly(node2,m); b=p=sortpoly(node2,m); printf("xiangchenghou:\n"); mulpoly(node1,node2,node3,a,b); p=sortpoly(node3,a*b); printpoly(node3,p); system("pause");system("cls"); main(); }
# include<stdio.h> # include<stdlib.h> struct std { int coef; int expn; } node[1000];
void printpoly(struct std node[],int n)
{ int i; printf("duoxiangshi jiangxu pailiewei:\nY="); if(n==0) printf("0"); for(i=n;i>=1;i--) { if(i!=n&&node[i].coef>0) printf("+"); printf("%dX^%d",node[i].coef,node[i].expn); }printf("\n"); } int sortpoly(struct std node[],int n)
{ int i,j,k,m,t; float q,p; struct std node0[1]; for(i=1;i<=n-1;i++) for(j=i+1;j<=n;j++) { if((node[i].expn)>(node[j].expn)) { node0[0]=node[i];node[i]=node[j];node[j]=node0[0]; } } for(i=1;i<=n;i++) { for(j=i+1;j<=n;j++) { if(node[i].expn==node[j].expn) { node[i].coef=node[i].coef+node[j].coef; for(m=j;m<=n-1;m++) node[m]=node[m+1]; n--; j--; if(node[i].coef==0) { for(t=i;t<=n-1;t++) node[t]=node[t+1]; n--; }
} } }
} void creatpoly(struct std node[],int n) { int i; printf("qingyici shuru meiyixiang de xishu zhishu:\n"); for(i=1;i<=n;i++) scanf("%d %d",&node[i].coef,&node[i].expn); }
void mulpoly(struct std node1[],struct std node2[],struct std node3[],int n1,int n2) { int i,j,k=1; if(n1==0||n2==0) {node3[0].coef=0;node3[1].coef=0;} else { for(i=1;i<=n1;i++) for(j=1;j<=n2;j++) { node3[k].coef=node1[i].coef*node2[j].coef; node3[k].expn=node1[i].expn+node2[j].expn; k=k+1; } } } void main() { int n,m,p,a,b; struct std node1[1000],node2[1000],node3[1000]; printf("qingshuru duoxiangshi de xiangshu:\n"); scanf("%d",&n);
printf("qingshuru diyige duoxiangshi:\n"); creatpoly(node1,n); a=p=sortpoly(node1,n);
printf("qing shuru dierge duoxiangshi:\n"); printf("qingshuru duoxiang shi de xiangshu:\n"); scanf("%d",&m); creatpoly(node2,m); b=p=sortpoly(node2,m); printf("xiangchenghou:\n"); mulpoly(node1,node2,node3,a,b); p=sortpoly(node3,a*b); printpoly(node3,p); system("pause");system("cls"); main(); }