Polynomial Addition in C

, by Engineer's Vision

/* polynomial */

#include<stdio.h>
#include<conio.h>
#include<math.h>
typedef struct term
    {
     int power;
     float coeff;
    }term;
typedef struct polynomial
    {
     term a[20];
     int n;
    }polynomial;
void read(polynomial *ptr);
void print(polynomial *ptr);
polynomial add(polynomial *p1,polynomial *p2);
void main()
    {
    polynomial P1,P2,P3;
    int option;
    P1.n=P2.n=P3.n=0;
    clrscr();
    do
    {
     printf("\n1: Create 1'st Polynomial.");
     printf("\n2: Create 2'nd Polynomial.");
     printf("\n3: Add Polynomials.");
     printf("\n4: Quit");
     scanf("%d",&option);
     switch(option)
         {
         case 1:read(&P1); break;
         case 2:read(&P2); break;
         case 3:P3=add(&P1,&P2);
         printf("\n1'st polynomial ->");
         print(&P1);
         printf("\n2'nd polynomial ->");
         print(&P2);
         printf("\nSum=");
         print(&P3);
         break;
         }
    }while(option!=4);
    }
void read(polynomial *ptr)
    {
    int n,i,power;
    float coeff;
    term t;
    printf("\n Enter No. Of Terms:");
    scanf("%d",&n);
    for(i=0;i<n;i++)
        {
        printf("\n Enter A Term(Power Coeff.)");
        scanf("%d%f",&power,&coeff);
        t.coeff=coeff;
        t.power=power;
        ptr -> a[i]=t;
        }
    ptr -> n=n;
    }
void print(polynomial *ptr)
    {
    int i;
    printf("%5.2fX^%d",(ptr->a[0]).coeff,(ptr->a[0]).power);
    for(i=1;i<ptr->n;i++)
    printf("+%5.2fX^%d",(ptr->a[i]).coeff,(ptr->a[i]).power);
    }
polynomial add(polynomial *P1,polynomial *P2)
    {
    polynomial P3;
    term t;
    int i,j,k;
    i=j=k=0;
    P3.n=0;
    while(i<P1->n && j<P2->n)
        {
        if(P1->a[i].power==P2->a[j].power)
        {
        t.power=P1->a[i].power;
        t.coeff=P1->a[i].coeff+P2->a[j].coeff;
        P3.a[k]=t;
        i++;j++;k++;
        }
        else
        if(P1->a[i].power<P2->a[j].power)
        P3.a[k++]=P1->a[i++];
        else
        P3.a[k++]=P2->a[j++];
        }
        while(i<P1->n)
        P3.a[k++]=P1->a[i++];
        while(j<P2->n)
        P3.a[k++]=P2->a[j++];
        P3.n=k;
        return(P3);
    }

0 comments: