Untitled
unknown
plain_text
4 years ago
2.5 kB
6
Indexable
/* program for addition of two polynomials * polynomial are stored using structure * and program uses array of structure */ #include<stdio.h> /* declare structure for polynomial */ struct poly { int coeff; int expo; }; /* declare three arrays p1, p2, p3 of type structure poly. * each polynomial can have maximum of ten terms * addition result of p1 and p2 is stored in p3 */ struct poly p1[10],p2[10],p3[10]; /* function prototypes */ int readPoly(struct poly []); int addPoly(struct poly [],struct poly [],int ,int ,struct poly []); void displayPoly( struct poly [],int terms); int main() { int t1,t2,t3; /* read and display first polynomial */ t1=readPoly(p1); printf(" \n First polynomial : "); displayPoly(p1,t1); /* read and display second polynomial */ t2=readPoly(p2); printf(" \n Second polynomial : "); displayPoly(p2,t2); /* add two polynomials and display resultant polynomial */ t3=addPoly(p1,p2,t1,t2,p3); printf(" \n\n Resultant polynomial after addition : "); displayPoly(p3,t3); printf("\n"); return 0; } int readPoly(struct poly p[10]) { int t1,i; printf("\n\n Enter the total number of terms in the polynomial:"); scanf("%d",&t1); printf("\n Enter the COEFFICIENT and EXPONENT in DESCENDING ORDER\n"); for(i=0;i<t1;i++) { printf(" Enter the Coefficient(%d): ",i+1); scanf("%d",&p[i].coeff); printf(" Enter the exponent(%d): ",i+1); scanf("%d",&p[i].expo); /* only statement in loop */ } return(t1); } int addPoly(struct poly p1[10],struct poly p2[10],int t1,int t2,struct poly p3[10]) { int i,j,k; i=0; j=0; k=0; while(i<t1 && j<t2) { if(p1[i].expo==p2[j].expo) { p3[k].coeff=p1[i].coeff + p2[j].coeff; p3[k].expo=p1[i].expo; i++; j++; k++; } else if(p1[i].expo>p2[j].expo) { p3[k].coeff=p1[i].coeff; p3[k].expo=p1[i].expo; i++; k++; } else { p3[k].coeff=p2[j].coeff; p3[k].expo=p2[j].expo; j++; k++; } } /* for rest over terms of polynomial 1 */ while(i<t1) { p3[k].coeff=p1[i].coeff; p3[k].expo=p1[i].expo; i++; k++; } /* for rest over terms of polynomial 2 */ while(j<t2) { p3[k].coeff=p2[j].coeff; p3[k].expo=p2[j].expo; j++; k++; } return(k); /* k is number of terms in resultant polynomial*/ } void displayPoly(struct poly p[10],int term) { int k; for(k=0;k<term-1;k++) printf("%d(x^%d)+",p[k].coeff,p[k].expo); printf("%d(x^%d)",p[term-1].coeff,p[term-1].expo); }
Editor is loading...