c مسئله ی جمع و تفریق و ضرب و تقسیم چند جمله ای ها ( زبان ++C

کد:
کد PHP:
#include<conio.h> 
#include<iostream.h> 
#define Max 20 
class Poly
class 
PolyNode 

friend Poly
float Coef
int Pow
}; 
class 
Poly 

int n
PolyNode Data[Max]; 
public: 
void Poly::SortPoly(void); 
void ReadPoly(void); 
void WritePoly(void); 
void AddPoly(Poly a,Poly b); 
void SubtractPoly(Poly a,Poly b); 
void MulPoly(Poly a,Poly b); 
void Poly::ItemPoly(float Coef,int Pow,Poly b); 
void Poly::TaghsimPoly(int k,Poly a,Poly b); 
}; 
void Poly::SortPoly(void

int i,j
PolyNode item
for(
i=n-1;i>0;i--) 
for(
j=0;j<i;j++) 
if(
Data[j].Pow<Data[j+1].Pow

item=Data[j]; 
Data[j]=Data[j+1]; 
Data[j+1]=item

while(
i<n-1
if(
Data[i].Pow==Data[i+1].Pow

Data[i].Coef+=Data[i+1].Coef
for(
j=i+1;j<n-1;j++)Data[j]=Data[j+1]; 
n--; 
}else 
i++; 

void Poly::ReadPoly(void

int i
cout<<"\nPlease enter parts of poly : "
cin>>n
cout<<"\nPlease enter Polynomial : \n\n"
for(
i=0;i<n;i++) 

cin>>Data[i].Coef
cout<<" x^"<<endl
cin>>Data[i].Pow
cout<<" +"<<endl


void Poly::WritePoly(void

int i
cout<<"\n"
for(
i=0;i<n;i++)cout<<Data[i].Coef<<"X^"<<Data[i].Pow<<" + "

void Poly::AddPoly(Poly a,Poly b

int i,j,k
i=j=k=0
while(
i<a.n&&j<b.n

if(
a.Data[i].Pow>b.Data[j].Pow

Data[k].Coef=a.Data[i].Coef
Data[k++].Pow=a.Data[i++].Pow

else if(
a.Data[i].Pow<b.Data[j].Pow

Data[k].Coef=b.Data[j].Coef
Data[k++].Pow=b.Data[j++].Pow

else if(
a.Data[i].Coef+b.Data[j].Coef

Data[k].Coef=a.Data[i].Coef+b.Data[j].Coef
Data[k++].Pow=a.Data[i++].Pow
j++; 

else 

i++; 
j++; 


while(
i<a.n

Data[k].Coef=a.Data[i].Coef
Data[k++].Pow=a.Data[i++].Pow

while(
j<b.n

Data[k].Coef=b.Data[j].Coef
Data[k++].Pow=b.Data[j++].Pow

n=k

void Poly::SubtractPoly(Poly a,Poly b

int i,j,k
i=j=k=0
while(
i<a.n&&j<b.n

if(
a.Data[i].Pow>b.Data[j].Pow

Data[k].Coef=a.Data[i].Coef
Data[k++].Pow=a.Data[i++].Pow

else if(
a.Data[i].Pow<b.Data[j].Pow

Data[k].Coef=b.Data[j].Coef
Data[k++].Pow=b.Data[j++].Pow

else if(
a.Data[i].Coef-b.Data[j].Coef

Data[k].Coef=a.Data[i].Coef-b.Data[j].Coef
Data[k++].Pow=a.Data[i++].Pow
j++; 

else 

i++; 
j++; 


while(
i<a.n

Data[k].Coef=a.Data[i].Coef
Data[k++].Pow=a.Data[i++].Pow

while(
j<b.n

Data[k].Coef=b.Data[j].Coef
Data[k++].Pow=b.Data[j++].Pow

n=k

void Poly::MulPoly(Poly a,Poly b

int i,j,k
i=j=k=0
while(
i<a.n

j=0
while(
j<b.n

Data[k].Coef=a.Data[i].Coef*b.Data[j].Coef
Data[k++].Pow=a.Data[i].Pow+b.Data[j++].Pow

i++; 

n=k

void Poly::ItemPoly(float Coef,int Pow,Poly b

int j,t
j=t=0
while(
j<b.n

Data[t].Coef=Coef*b.Data[j].Coef
Data[t++].Pow=Pow+b.Data[j++].Pow

n=t

void Poly::TaghsimPoly(int k,Poly a,Poly b

Poly d,e
p
if(
a.Data[0].Pow>=b.Data[0].Pow

Data[k].Pow=a.Data[0].Pow-b.Data[0].Pow
Data[k].Coef=a.Data[0].Coef/b.Data[0].Coef
d.ItemPoly(Data[k].Coef,Data[k].Pow,b); 
e.SubtractPoly(a,d); 
k++; 

n=k
if(
e.Data[0].Pow>=b.Data[0].Pow)TaghsimPoly(k,e,b); 
else 

cout<<"\nMod Is : \n"
e.WritePoly(); 


void main(void

Poly a,b,c
char Sign
a.ReadPoly(); 
a.SortPoly(); 
cout<<"\nPlease enter sign(+,-,*,/) : "
cin>>Sign
b.ReadPoly(); 
b.SortPoly(); 
switch(
Sign

case
'+'
c.AddPoly(a,b); 
break; 
case
'-'
c.SubtractPoly(a,b); 
break; 
case
'*'
c.MulPoly(a,b); 
c.SortPoly(); 
break; 
case
'/'
c.TaghsimPoly(0,a,b); 
break; 

cout<<"\n\nAnswer Is : \n"
c.WritePoly(); 
getche(); 

لطفا علامتها را بر عكس كنيد