Polynomial Addition Using Structure [with C program]

Learn: How to add two polynomials using structures in C? This article explains how to implement structure of polynomial, algorithm and C program for polynomial addition. By Abhishek Jain Last updated : April 13, 2023

What is Polynomial?

A polynomial is an expression that contains more than two terms. A term is made up of coefficient and exponent.

Example

P(x) = 4x3+6x2+7x+9

A polynomial may be represented using array or structure. A structure may be defined such that it contains two parts – one is the coefficient and second is the corresponding exponent. The structure definition may be given as shown below:

Polynomial Structure Declaration

struct polynomial{ 
    int coefficient; 
    int exponent;
};

How to Add Two Polynomials?

To add two polynomials using structure, just add the coefficient parts of the polynomials having same exponent.

Add Polynomial Function Declaration

addPolynomial(
    struct polynomial p1[10], 
    struct polynomial p2[10], 
    int t1, 
    int t2, 
    struct polynomial p3[10]);

Polynomial Addition Algorithm

  1. [Initialize segment variables]
    [Initialize Counter] Set i=0,j=0,k=0
    
  2. Repeat while i<t1 and j<t2
        IF p1[i].expo=p2[j].expo, THEN
            p3[i].coeff=p1[i].coeff+p2[i].coeff
            p3[k].expo=p1[i].expo
            [Increase counter] Set i=i+1,j=j+1,k=k+1
        ELSE IF p1[i].expo > p2[j].expo, THEN
            p3[k].coeff=p1[i].coeff
            p3[k].expo=p1[i].expo
            [Increase counter] Set i=i+1,k=k+1
        ELSE
            p3[k].coeff=p2[j].coeff
            p3[k].expo=p2[j].expo
            Set j=j+1,k=k+1
        [End of If]
    [End of loop]
    
  3. Repeat while i<t1 
        p3[k].coeff=p1[i].coeff
        p3[k].expo=p1[i].expo
        Set i=i+1,k=k+1
    [End of loop]
    
  4. Repeat while j<t2 
        p3[k].coeff=p2[j].coeff
        p3[k].expo=p2[j].expo
        Set j=j+1,k=k+1
    [End of loop]
    
  5. Return k
    
  6. EXIT
    

C Program for Polynomial Addition Using Structure

/* 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);
}

Output

Enter the total number of terms in the polynomial:4
Enter the COEFFICIENT and EXPONENT in DESCENDING ORDER
Enter the Coefficient(1): 3
Enter the exponent(1): 4
Enter the Coefficient(2): 7
Enter the exponent(2): 3
Enter the Coefficient(3): 5
Enter the exponent(3): 1
Enter the Coefficient(4): 8
Enter the exponent(4): 0

First polynomial : 3(x^4)+7(x^3)+5(x^1)+8(x^0)

Enter the total number of terms in the polynomial:5
Enter the COEFFICIENT and EXPONENT in DESCENDING ORDER
Enter the Coefficient(1): 7
Enter the exponent(1): 5
Enter the Coefficient(2): 6
Enter the exponent(2): 4
Enter the Coefficient(3): 8
Enter the exponent(3): 2
Enter the Coefficient(4): 9
Enter the exponent(4): 1
Enter the Coefficient(5): 2
Enter the exponent(5): 0
Second polynomial : 7(x^5)+6(x^4)+8(x^2)+9(x^1)+2(x^0)

Resultant polynomial after addition : 7(x^5)+9(x^4)+7(x^3)+8(x^2)+14(x^1)+10(x^0)


Comments and Discussions!

Load comments ↻





Copyright © 2024 www.includehelp.com. All rights reserved.