Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- typedef struct {
- int coeff;
- int expo;
- } Poly;
- int readPoly(Poly *p);
- int addPoly(Poly *p1, Poly *p2, Poly *p3, int t1, int t2);
- void displayPoly(Poly *p, int terms);
- int main() {
- Poly *p1, *p2, *p3;
- int t1, t2, t3;
- p1 = (Poly *)malloc(10 * sizeof(Poly));
- p2 = (Poly *)malloc(10 * sizeof(Poly));
- p3 = (Poly *)malloc(10 * sizeof(Poly));
- printf("First Polynomial: \n");
- t1 = readPoly(p1);
- displayPoly(p1, t1);
- printf("\nSecond Polynomial: \n");
- t2 = readPoly(p2);
- displayPoly(p2, t2);
- printf("\nResultant Polynomial: \n");
- t3 = addPoly(p1, p2, p3, t1, t2);
- displayPoly(p3, t3);
- }
- int readPoly(Poly *p) {
- int terms;
- printf("Enter the number of terms: ");
- scanf("%d", &terms);
- for (int i=0; i<terms; i++) {
- printf("Enter the coefficient: ");
- scanf("%d", &p[i].coeff);
- printf("Enter the exponent: ");
- scanf("%d", &p[i].expo);
- }
- return terms;
- }
- int addPoly(Poly *p1, Poly *p2, Poly *p3, int t1, int t2) {
- int i, j, k;
- i = j = k = 0;
- while (i < t1 && j < t2) {
- if (p1[i].expo == p2[j].expo) {
- p3[k].expo = p1[i].expo;
- p3[k].coeff = p1[i].coeff + p2[j].coeff;
- i++, j++, k++;
- }
- if (p1[i].expo > p2[j].expo) {
- p3[k].expo = p1[i].expo;
- p3[k].coeff = p1[i].coeff;
- i++, k++;
- }
- if (p2[j].expo > p1[i].expo) {
- p3[k].expo = p2[j].expo;
- p3[k].coeff = p2[j].coeff;
- j++, k++;
- }
- }
- while (i < t1) {
- p3[k].expo = p1[i].expo;
- p3[k].coeff = p1[i].coeff;
- i++, k++;
- }
- while (j < t2) {
- p3[k].expo = p2[j].expo;
- p3[k].coeff = p2[j].coeff;
- j++, k++;
- }
- return k;
- }
- void displayPoly(Poly *p, int terms) {
- int t;
- for (t=0; t<terms-1; t++) {
- printf("(%d)x^%d + ", p[t].coeff, p[t].expo);
- }
- printf("(%d)x^%d", p[t].coeff, p[t].expo);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement