Advertisement
Guest User

Wielomian vol.2

a guest
Mar 30th, 2015
251
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.00 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4. class Wielomian
  5. {
  6.     int n;
  7.     double *wsp;
  8.  
  9. public:
  10.     void wypisz();
  11.     Wielomian();
  12.     Wielomian (int r);
  13.     Wielomian(int x, double *w);
  14.     Wielomian(const Wielomian &W);
  15.     ~Wielomian();
  16.     Wielomian& operator=(const Wielomian & W);
  17.     Wielomian &operator+(Wielomian &W);
  18.     friend ostream &operator<<(ostream & out, Wielomian W);
  19.     friend istream &operator>>(istream & in,Wielomian &W);
  20. };
  21.  
  22. Wielomian::Wielomian(int r)
  23. {
  24.     n=r;
  25.     wsp=new double[n];
  26.    /* for(int i=0;i<n;i++)
  27.     {
  28.         cin>>wsp[i];
  29.     }*/
  30. }
  31. istream &operator>>(istream&in,Wielomian &W)
  32. {
  33.     W.wsp=new double[W.n];
  34.     for(int i=0;i<W.n;i++)
  35.     {
  36.         cin>>W.wsp[i];
  37.     }
  38.  return in;
  39. }
  40.  
  41. ostream &operator<<(ostream & out, Wielomian W)
  42. {
  43.     for(int i=W.n-1; i>=0; i--)
  44.     {
  45.         if(i==W.n-1)
  46.         {
  47.             cout<<W.wsp[i]<<"x^"<<i-1;
  48.         }
  49.         else if(i!=0)
  50.         {
  51.             int x=i-1;
  52.             if(x!=0)
  53.             {
  54.                 cout<<"+"<<W.wsp[i]<<"x^"<<x;
  55.             }
  56.             else
  57.             {
  58.                 cout<<"+"<<W.wsp[i]<<"x";
  59.             }
  60.  
  61.         }
  62.         else if(i==0)
  63.         {
  64.             cout<<"+"<<W.wsp[i]<<endl;
  65.         }
  66.     }
  67.     return out;
  68. }
  69.  
  70.  
  71. Wielomian::Wielomian()
  72. {
  73.     n=1;
  74.     wsp=new double[n];
  75.     for(int i=0; i<n; i++)
  76.     {
  77.         wsp[i]=0;
  78.     }
  79. }
  80. Wielomian::Wielomian(int x,double *w)
  81. {
  82.     n=x;
  83.     wsp=new double[n];
  84.     for(int i=0; i<n; i++)
  85.     {
  86.         wsp[i]=w[i];
  87.     }
  88.  
  89. }
  90.  
  91. Wielomian::Wielomian(const Wielomian& W)
  92. {
  93.     n=W.n;
  94.     delete[]wsp;
  95.     wsp=new double[n];
  96.     for(int i=0; i<n; i++)
  97.     {
  98.         wsp[i]=W.wsp[i];
  99.     }
  100. }
  101.  
  102. Wielomian::~Wielomian()
  103. {
  104.     delete []wsp;
  105. }
  106.  
  107. void Wielomian::wypisz()
  108. {
  109.     for(int i=n-1; i>=0; i--)
  110.     {
  111.         if(i==n-1)
  112.         {
  113.             cout<<wsp[i]<<"x^"<<i-1;
  114.         }
  115.         else if(i!=0)
  116.         {
  117.             int x=i-1;
  118.             if(x!=0)
  119.             {
  120.                 cout<<"+"<<wsp[i]<<"x^"<<x;
  121.             }
  122.             else
  123.             {
  124.                 cout<<"+"<<wsp[i]<<"x";
  125.             }
  126.  
  127.         }
  128.         else if(i==0)
  129.         {
  130.             cout<<"+"<<wsp[i]<<endl;
  131.         }
  132.     }
  133. }
  134.  
  135.  
  136.  
  137. Wielomian & Wielomian::operator=(const Wielomian& W)
  138. {
  139.     n=W.n;
  140.     delete[]wsp;
  141.     wsp=new double[n];
  142. for(int i=0;i<n;i++)
  143. {
  144.     wsp[i]=W.wsp[i];
  145. }
  146.  
  147.     return *this;
  148. }
  149.  
  150. Wielomian & Wielomian::operator+(Wielomian& W)
  151. {
  152. int roz;
  153.  
  154.     if(n<W.n)roz=W.n;
  155.     else roz=n;
  156.     double *tab1=new double[n];
  157.     Wielomian Wynik(roz,tab1);
  158.  
  159.     for(int i=0; i<roz; i++)
  160.     {
  161.         Wynik.wsp[i]=wsp[i]+W.wsp[i];
  162.     }
  163.  
  164. return(Wynik);
  165.  
  166. }
  167.  
  168. int main()
  169. {
  170.  
  171.     double *tab=new double[5];
  172.     tab[0]=4.0;
  173.     tab[1]=3.0;
  174.     tab[2]=5.0;
  175.     tab[3]=2.0;
  176.     tab[4]=4.0;
  177.  
  178.     Wielomian A(5,tab);
  179.     Wielomian B(5,tab);
  180.       Wielomian C;
  181.  
  182.       C=A+B;
  183. cin>>B;
  184. cout<<B<<endl;
  185. cout <<C<<endl;
  186.  
  187.     return 0;
  188. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement