Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include"Polynomial.h"
- void Polynomial::read() //reading
- {
- int i;
- // cout<<"Enter number of terms"<<endl;
- cin>>n;
- // cout<<"<exp> <coefficient>"<<endl;
- for(i=0; i<n; i++)
- {
- cin>>k[i].p>>k[i].c;
- }
- cout<<endl;
- }
- void Polynomial::print()
- {
- //sorting
- Polynomial r;
- int i,j,f=0;
- for(i=0; i<n; i++)
- {
- r.k[i].p=0;
- r.k[i].c=0;
- }
- r.n=n;
- i=0;
- for(i=0; i<n; i++)
- {
- r.k[i].p=k[i].p;
- r.k[i].c=k[i].c;
- }
- int g;
- double q;
- for(j=0; j<r.n; j++)
- {
- for(i=j+1; i<r.n; i++)
- {
- if(r.k[i].p<r.k[j].p)
- {
- g=r.k[i].p;
- r.k[i].p=r.k[j].p;
- r.k[j].p=g;
- q=r.k[i].c;
- r.k[i].c=r.k[j].c;
- r.k[j].c=q;
- }
- }
- }
- for(i=0; i<r.n; i++)
- {
- r.k[i].m=1; //common terms out
- }
- g=0;
- for(i=0; i<r.n-1; i++)
- {
- if(r.k[i].p==r.k[i+1].p)
- {
- g=i;
- while(r.k[g].p==r.k[i+1].p)
- {
- r.k[g].c=r.k[g].c+r.k[i+1].c;
- i++;
- r.k[i].m=0;
- }
- i--;
- }
- }
- f=0;
- for(i=0; i<r.n; i++)
- {
- if(r.k[i].m!=0&&r.k[i].c!=0)
- {
- if(r.k[i].c>0)
- {
- if(r.k[i].p==0&&i==0)
- {
- cout<<r.k[i].c;
- f++;
- }
- if(r.k[i].p!=0&&i==0&&r.k[i].p!=1&&r.k[i].c!=1)
- {
- cout<<r.k[i].c<<"X^"<<r.k[i].p;
- f++;
- }
- if(r.k[i].p!=0&&i==0&&r.k[i].p!=1&&r.k[i].c==1)
- {
- cout<<"X^"<<r.k[i].p;
- f++;
- }
- if(r.k[i].p!=0&&i==0&&r.k[i].p==1&&r.k[i].c==1)
- {
- cout<<"X";
- f++;
- }
- if(r.k[i].p!=0&&i==0&&r.k[i].p==1&&r.k[i].c!=1)
- {
- cout<<r.k[i].c<<"X";
- f++;
- }
- if(r.k[i].p!=0&&i!=0&&r.k[i].p==1&&r.k[i].c!=1)
- {
- if(f!=0)
- {
- cout<<" +";
- }
- cout<<r.k[i].c<<"X";
- f++;
- }
- if(r.k[i].p==0&&i!=0)
- {
- cout<<r.k[i].c;
- f++;
- }
- if(r.k[i].p!=0&&i!=0&&r.k[i].p!=1&&r.k[i].c==1)
- {
- if(f!=0)
- {
- cout<<" +";
- }
- cout<<"X^"<<r.k[i].p;
- f++;
- }
- if (r.k[i].p!=0&&i!=0&&r.k[i].p!=1&&r.k[i].c!=1)
- {
- if(f!=0)
- {
- cout<<" +";
- }
- cout<<r.k[i].c<<"X^"<<r.k[i].p;
- f++;
- }
- if(r.k[i].p!=0&&i!=0&&r.k[i].p==1&&r.k[i].c==1)
- {
- if(f!=0)
- {
- cout<<" +";
- }
- cout<<"X";
- f++;
- }
- }
- else
- {
- f++;
- if(r.k[i].p==0&&i==0)
- {
- cout<<r.k[i].c;
- f++;
- }
- if(r.k[i].p!=0&&i==0&&r.k[i].p!=1&&r.k[i].c!=-1)
- {
- cout<<" "<<r.k[i].c<<"X^"<<r.k[i].p;
- f++;
- }
- if(r.k[i].p!=0&&i==0&&r.k[i].p!=1&&r.k[i].c==-1)
- {
- cout<<" -"<<"X^"<<r.k[i].p;
- f++;
- }
- if(r.k[i].p!=0&&i==0&&r.k[i].p==1&&r.k[i].c==-1)
- {
- cout<<" -"<<"X";
- f++;
- }
- if(r.k[i].p!=0&&i==0&&r.k[i].p==1&&r.k[i].c!=-1)
- {
- cout<<" "<<r.k[i].c<<"X";
- f++;
- }
- if(r.k[i].p!=0&&i!=0&&r.k[i].p==1&&r.k[i].c!=-1)
- {
- cout<<r.k[i].c<<"X";
- f++;
- }
- if(r.k[i].p==0&&i!=0)
- {
- cout<<r.k[i].c;
- f++;
- }
- if(r.k[i].p!=0&&i!=0&&r.k[i].p!=1&&r.k[i].c==-1)
- {
- cout<<" -"<<"X^"<<r.k[i].p;
- f++;
- }
- if (r.k[i].p!=0&&i!=0&&r.k[i].p!=1&&r.k[i].c!=-1)
- {
- cout<<" "<<r.k[i].c<<"X^"<<r.k[i].p;
- f++;
- }
- if(r.k[i].p!=0&&i!=0&&r.k[i].p==1&&r.k[i].c==-1)
- {
- cout<<" -"<<"X";
- f++;
- }
- }
- }
- }
- cout<<endl;
- }
- Polynomial Polynomial::operator+(Polynomial j)
- {
- int v;
- Polynomial r;
- r.n=j.n+n;
- for(v=0; v<r.n; v++)
- {
- if(v<n)
- {
- r.k[v].p=k[v].p;
- r.k[v].c=k[v].c;
- }
- if(v>=n)
- {
- r.k[v].p=j.k[v-n].p;
- r.k[v].c=j.k[v-n].c;
- }
- }
- return r;
- }
- Polynomial Polynomial::operator*(Polynomial h)
- {
- Polynomial r2;
- int i,j,o=0;
- r2.n=n*h.n;
- for(i=0; i<n; i++)
- {
- for(j=0; j<h.n; j++)
- {
- r2.k[o].p=k[i].p+h.k[j].p;
- r2.k[o].c=k[i].c*h.k[j].c;
- o++;
- }
- }
- return r2;
- }
- double Polynomial::valueAt(double t)
- {
- double s=0;
- int i;
- for(i=0; i<n-1; i++)
- {
- s=s+((k[i].c)*(pow(t,k[i].p)));
- }
- double r=k[i].c*pow(t,k[i].p);
- double c=s+r;
- return c;
- }
- Polynomial Polynomial::sorter()
- {
- Polynomial r;
- int i,j;
- r.n=n;
- for(i=0; i<n; i++)
- {
- r.k[i].p=k[i].p;
- r.k[i].c=k[i].c;
- }
- int g;
- double q;
- for(j=0; j<r.n; j++)
- {
- for(i=j+1; i<r.n; i++)
- {
- if(r.k[i].p<r.k[j].p)
- {
- g=r.k[i].p;
- r.k[i].p=r.k[j].p;
- r.k[j].p=g;
- q=r.k[i].c;
- r.k[i].c=r.k[j].c;
- r.k[j].c=q;
- }
- }
- }
- return r;
- }
- void Polynomial::plot(double xleft,double xright)
- {
- initCanvas("Polynomial",600,600);
- Polynomial r;
- r.n=n;
- xright=xright;
- xleft=xleft;double f;
- for(int i=0; i<n; i++)
- {
- r.k[i].p=k[i].p;
- r.k[i].c=k[i].c;
- }
- if(r.k[r.n-1].p>6) f=.10;
- else if(r.k[r.n-1].p>3) f=8;
- else f=50;
- for(int i=0; i<n; i++)
- {
- r.k[i].p=k[i].p;
- r.k[i].c=k[i].c*f/2;
- }
- Line x_axis(0,300,600,300);
- Line y_axis(300,0,300,600);
- double x=xleft;
- x=xleft;
- while(x<xright){
- Line k(x*f+300,300-r.valueAt(x),(x+.1)*f+300,300-r.valueAt(x+.1));
- k.imprint();
- x+=.1;
- }
- getClick();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement