SHARE
TWEET

Untitled

a guest May 22nd, 2019 68 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include "Hedder.h"
  2. //Polynom Vec::&operator[](int x){
  3. //  return a[x];
  4. //}
  5. template <typename T>
  6. Polynom<T>::Polynom()
  7. {
  8.   try{
  9.     koef = NULL;
  10.   }
  11.   catch(int a){
  12.     cout << "no memory";
  13.   }
  14. }
  15. template <typename T>
  16. Polynom<T>::~Polynom()
  17. {
  18.    try{
  19.     delete[]koef;
  20.   }
  21.   catch(int a){
  22.     cout << "no poly";
  23.   }
  24. }
  25. template <typename T>
  26. Polynom<T>::Polynom(int an)
  27. {
  28.     try{
  29.     int i;
  30.     n = an;
  31.     koef = new T[n + 1];
  32.     for (i = 0; i <= n; i++)
  33.     {
  34.         koef[i] = 0;
  35.     }
  36.   }
  37.   catch(int a){
  38.     cout << "no memory";
  39.   }
  40. }
  41. template <typename T>
  42. Polynom<T>::Polynom(const Polynom &f)
  43. {
  44.    try{
  45.     n = f.n;
  46.     koef = new T[n + 1];
  47.     for (int i = 0; i <= n; i++)
  48.         koef[i] = f.koef[i];
  49. }
  50. catch(int a){
  51.   cout << "no memory";
  52. }
  53. }
  54. template <typename T>
  55. int Polynom<T>::getn()
  56. {
  57.     return n;
  58. }
  59. template <typename T>
  60. double Polynom<T>::getkoef(int i)
  61. {
  62.   try{
  63.     if (i <= n)
  64.         return koef[i];
  65.     else
  66.         return 0.0;
  67.       }
  68.       catch(int a){
  69.         cout << "error";
  70.         return a;
  71.       }
  72. }
  73. template <typename T>
  74. double Polynom<T>::sum(){
  75.   try{
  76.   int ans = 0;
  77.   for(int i = 0; i <= n; i++){
  78.     ans += koef[i];
  79.   }
  80.   return ans;
  81. }
  82. catch(int a){
  83.   cout << "error";
  84.   return a;
  85. }
  86. }
  87. template <typename T>
  88. Polynom<T> Polynom<T>::operator-(const Polynom<T> &t) //оператор вычитания А-В
  89. {
  90.   try{
  91.     int i;
  92.     if (n >= t.n)//А>B
  93.     {
  94.         Polynom Z = *this;
  95.         for (i = 0; i <= t.n; i++)
  96.             Z.koef[i] = koef[i] - t.koef[i];
  97.         return Z;
  98.     }
  99.     else//B>A
  100.     {
  101.         Polynom Z(t.n);
  102.         for (i = 0; i <= n; i++)
  103.             Z.koef[i] = -t.koef[i] + koef[i];
  104.         for (i = n + 1; i <= t.n; i++)
  105.             Z.koef[i] = -t.koef[i];
  106.         return Z;
  107.     }
  108.   }
  109.   catch(int a){
  110.     cout << "error";
  111.     return a;
  112.   }
  113. }
  114. template <typename T>
  115. void Polynom<T>::print(){
  116.   for(int i = 0; i <= n; i++){
  117.     cout << koef[i] << ' ';
  118.   }
  119. }
  120. template <typename T>
  121. Polynom<T> Polynom<T>::operator+(const Polynom<T> &t)//оператор сложения A+B
  122. {
  123.     try{
  124.     int i;
  125.     if (n >= t.n)//A>B
  126.     {
  127.         Polynom Z=*this;
  128.         for (i = 0; i <= n; i++)
  129.             Z.koef[i] = koef[i] + t.koef[i];
  130.         return Z;
  131.     }
  132.     else//A<B
  133.     {
  134.         Polynom Z=t;
  135.         for (i = 0; i <= n; i++)
  136.             Z.koef[i] = t.koef[i] + koef[i];
  137.         return Z;
  138.     }
  139.   }
  140.   catch(int a){
  141.     cout << "error";
  142.     return a;
  143.   }
  144. }
  145. template <typename T>
  146. Polynom<T> Polynom<T>::operator*(const Polynom<T> &t)//оператор умножения А*В
  147. {
  148.   try{
  149.     int i,j;
  150.     Polynom Y(n+t.n);
  151.     for (i = 0; i <= n; i++)
  152.         for (j = 0; j <= t.n; j++)
  153.             Y.koef[i + j] += koef[i]*t.koef[j];
  154.     return Y;
  155.   }
  156.   catch(int a){
  157.     cout << "error";
  158.     return a;
  159.   }
  160. }
  161. template <typename T>
  162. Polynom<T> Polynom<T>::operator = (const Polynom<T> &t)
  163. {
  164.     try{
  165.     if(this!=&t)
  166.     {
  167.         delete[] koef;
  168.         n = t.n;
  169.         koef = new T[n + 1];
  170.         for (int i = 0; i <= n; i++)
  171.             koef[i] = t.koef[i];
  172.     }
  173.     return *this;
  174.   }
  175.   catch(int a){
  176.     cout << "error";
  177.     return a;
  178.   }
  179. }
  180.  
  181. template <typename T> ostream &operator<< (ostream &s, const Polynom<T> &c)
  182. {
  183. int i, n=0;
  184. for (i = 0; i <= c.n; i++)
  185. {
  186.     if (c.koef[i] != 0)
  187.         n++;
  188. }
  189. if (n != 0)
  190. {
  191.     if (c.koef[0] != 0)
  192.     {
  193.         s << c.koef[0];
  194.     }
  195.     for (i = 1; i <= c.n; i++)
  196.     {
  197.         if (c.koef[i] < 0)
  198.         {
  199.             if(c.koef[i]!=-1)
  200.                 s << c.koef[i] << "X^" << i;
  201.             else
  202.                 s << "-" << "X^" << i;
  203.         }
  204.         else
  205.         {
  206.             if (c.koef[i] != 0)
  207.             {
  208.                 if(c.koef[i] != 1)
  209.                     s << "+" << c.koef[i] << "X^" << i;
  210.                 else
  211.                     s<< "+" << "X^" << i;
  212.             }
  213.         }
  214.     }
  215. s << '\n';
  216. }
  217. else
  218. {
  219.     s << 0;
  220. }
  221. return s;
  222. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top