Polynomial Addition in C
/* 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);
}
#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:
Post a Comment