PDA

View Full Version : یک پروژه ( کلاس polynomial )



mes
سه شنبه 05 خرداد 1383, 23:30 عصر
کلاس برنامه چند جمله ای

#include<iostream.h>
#include<stdlib.h>
#include<conio.h>
class polynomial{
friend istream &operator>>(istream &,polynomial &);
private:
int n;
float *arr;
public:
int getarr(int i){
return arr[i];
}
~polynomial(){
delete arr;
}
float tavan(float x,int tav){
float ert2=1;
int l;
for(l=0;l<tav;l++)
ert2=ert2*x;
return ert2;
}
void arzesh(float t){
float jam=0;
for(int g=0;g<=n;g++)
jam=arr[g]*tavan(t,n-g)+jam;
cout<<jam;
}
void setarr(int i,float y){
arr[i]=y;
}
void setn(int ni){
n=ni;
}
void print(){
int j2;
j2=n;
int i;
for(i=0;i<=n ;j2--,i++){
if(arr[i]<0)
cout<<arr[i]<<"x^"<<j2;
if(arr[i]>0)
cout<<"+"<<arr[i]<<"x^"<<j2;
}
cout<<endl;
}
int getn(){
return n;
}
polynomial &operator+=(polynomial &b){
int j;
int i;
if(n==b.n)
for(int i=0;i<=n;i++)
arr[i]=arr[i]+b.arr[i];
if(n>b.n)
for(j=b.n,i=n;j>=0;i--,j--)
arr[i]=b.arr[j]+arr[i];
if(n<b.n){
float *g=new float[n+1];
for(i=0;i<=n;i++)
g[i]=arr[i];
delete arr;
arr=new float[b.n+1];
for(i=n,j=b.n;j>=0;j--,i--)
if(i>=0)
arr[j]=b.arr[j]+g[i];
else
arr[j]=b.arr[j];
n=b.n;
delete g;
}
return *this;
}
polynomial &operator*=(const polynomial &b){
int shn=n+b.n;
int u=shn;
float *b4=new float[n+1];
float *b5=new float[shn+1];
int y=0 ;
for(int i=0;i<=shn;i++)
b5[i]=0;
for(i=0;i<=b.n;i++){
for(int j=0;j<=n;j++){
b4[j]=b.arr[i]*arr[j];
if(i==0)
b5[y]=b4[j];
if(i>0&y<shn)
b5[y]=b4[j]+b5[y];
if(y==shn)
b5[y]=b4[j];
y++;
}
y=i+1;
}
delete arr;
arr=new float[shn+1];
for(i=0;i<=shn;i++)
arr[i]=b5[i];
n=shn;
delete b4;
delete b5;
return *this;
}
};
istream &operator>>(istream &inp,polynomial &a){
float gar2;
inp>>gar2;
inp.ignore(2);
inp>>a.n;
a.arr=new float[a.n+1];
a.arr[0]=gar2;
int gar;
for(int i=1;i<=a.n;i++){
inp>>a.arr[i];
inp.ignore(2);
inp>>gar;
}
}
int menu(){
int g;
cout<<"please type a number and press enter"<<endl;
cout<<"1: set"<<endl;
cout<<"2: +"<<endl;
cout<<"3: *"<<endl;
cout<<"4: f(x)"<<endl;
cout<<"5: exit"<<endl;
cin>>g;
if(g==1)
return 1;
if(g==2)
return 2;
if(g==3)
return 3;
if(g==4)
return 4;
if(g==5)
return 5;
else
{
clrscr();
menu();}
return 0;

}
void amal(polynomial &b,int g){
if(g==1){
cout<<"enter polynoimial: ax^n+bx^n-1+...+zx^0"<<endl;
cin>>b;
}
if(g==2){
if (b.getn()>=0){
cout<<"enter polynoimial: ax^n+bx^n-1+...+zx^0"<<endl;
polynomial b2;
cin>>b2;
b2+=b;
b2.print();
}
if((b.getn()<0))
cout<<"error you first must from part 1: enter polynoimial: ax^n+bx^n-1+...+zx^0"<<endl;
}
if(g==3){
polynomial b3;
cin>>b3;
b3*=b;
b3.print();
}
if(g==4) {
float rl;
cin>>rl;
b.arzesh(rl);
}
}
int t=0;
void main(){
polynomial b;
while(t==0){
int j=menu();
if(j!=5){
amal(b,j);
}
else{
t=1;
cout<<"paian";
}
}
}

magic1362
چهارشنبه 16 خرداد 1386, 12:24 عصر
سلام
دوست عزیز اگه ممکنه فایل CPP این برنامه رو برا دانلود بزارین. چون تو حالت HTML اکثر کاراکترها قاطی شدن.

ممنون