SHARE
TWEET

ddd

a guest Jan 20th, 2019 61 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // principalele operatii pentru polinoame sunt
  2. /*
  3. -> adaugarea unei termen (monom)
  4. -> atribuirea unui polinom atltui polinom
  5. -> * cu o constanta
  6. -> ordonarea monoamelor dupa grad
  7. -> suma a doua polinoame
  8. -> diferenta a doua polinoame
  9. -> produsul a doua polinoame
  10. */
  11.  
  12. class Monom
  13. {
  14.     int grad;
  15.     double coef;
  16.  
  17. public:
  18.     Monom();
  19.     Monom(int grad, double coef);
  20.     Monom& operator=(Monom& monom);
  21.     Monom& operator+(Monom& monom);
  22.     Monom& operator-(Monom& monom);
  23.     Monom& operator*(double constanta);
  24.     Monom& operator*(Monom& monom);
  25.     int GetGrad();
  26.     double GetCoeficient();
  27. };
  28.  
  29. class Polinom
  30. {
  31.     int nrMonoame;
  32.     Monom data[50];
  33.  
  34. public:
  35.     Polinom();
  36.     void AddMonom(Monom m);
  37.     void DeleteMonom(Monom m);
  38.     Polinom& operator=(Polinom& polinom);
  39.     void MultiplicaCuOConstanta(double constanta);
  40.     Polinom& operator+(Polinom& p);
  41.     Polinom& operator-(Polinom& p);
  42.     Polinom& operator*(Polinom& p);
  43.     void Sort();
  44. };
  45.  
  46. Monom::Monom() {}
  47.  
  48. Monom::Monom(int grad, double coef)
  49. {
  50.     this->coef = coef;
  51.     this->grad = grad;
  52. }
  53.  
  54. Monom& Monom::operator=(Monom& monom)
  55. {
  56.     if (this != &monom)
  57.         return;
  58.  
  59.     grad = monom.grad;
  60.     coef = monom.coef;
  61. }
  62.  
  63. double Monom::GetCoeficient()
  64. {
  65.     return coef;
  66. }
  67.  
  68. int Monom::GetGrad()
  69. {
  70.     return grad;
  71. }
  72.  
  73. Monom& Monom::operator+(Monom& monom)
  74. {
  75.     coef += monom.coef;
  76.     return *this;
  77. }
  78.  
  79. Monom& Monom::operator-(Monom& monom)
  80. {
  81.     coef -= monom.coef;
  82.     return *this;
  83. }
  84.  
  85. Monom& Monom::operator*(double constatanta)
  86. {
  87.     coef *= constatanta;
  88. }
  89.  
  90.  
  91. Polinom::Polinom()
  92. {
  93.     nrMonoame = 0;
  94. }
  95.  
  96. void Polinom::AddMonom(Monom monom)
  97. {
  98.     bool found = false;
  99.  
  100.     for (int i = 0; i < nrMonoame && !found; i++)
  101.     {
  102.         if (data[i].GetGrad() == monom.GetGrad())
  103.         {
  104.             data[i] = data[i] + monom;
  105.             found = true;
  106.         }
  107.     }
  108.  
  109.     if (!found)
  110.     {
  111.         data[++nrMonoame] = monom;
  112.     }
  113. }
  114.  
  115. void Polinom::DeleteMonom(Monom monom)
  116. {
  117.     for (int i = 0; i < nrMonoame; i++)
  118.     {
  119.         if (data[i].GetGrad() == monom.GetGrad() && data[i].GetCoeficient() == monom.GetGrad())
  120.         {
  121.             data[i] = data[nrMonoame - 1];
  122.  
  123.             nrMonoame--;
  124.             break;
  125.         }
  126.     }
  127. }
  128.  
  129. Polinom& Polinom::operator=(Polinom& polinom)
  130. {
  131.     if (this != &polinom)
  132.         return*this;
  133.  
  134.     if (nrMonoame == polinom.nrMonoame)
  135.     {
  136.         for (int i = 0; i < nrMonoame; i++)
  137.         {
  138.             data[i] = polinom.data[i];
  139.         }
  140.     }
  141.     return *this;
  142. }
  143.  
  144. void Polinom::MultiplicaCuOConstanta(double constanta)
  145. {
  146.     if (constanta == 0)
  147.     {
  148.         nrMonoame = 0;
  149.     }
  150.  
  151.     else
  152.     {
  153.         for (int i = 0; i < nrMonoame; i++)
  154.         {
  155.             data[i] = data[i] * constanta;
  156.         }
  157.     }
  158. }
  159.  
  160. Polinom& Polinom::operator+(Polinom& polinom)
  161. {
  162.     Polinom temp = *this;
  163.  
  164.     for (int i = 0; i < nrMonoame; i++)
  165.     {
  166.         temp.AddMonom(polinom.data[i]);
  167.     }
  168.     return temp;
  169. }
  170.  
  171. Polinom& Polinom::operator-(Polinom& polinom)
  172. {
  173.     polinom.MultiplicaCuOConstanta(-1);
  174.  
  175.     for (int i = 0; i < nrMonoame; i++)
  176.     {
  177.         AddMonom(polinom.data[i]);
  178.     }
  179.     return *this;
  180. }
  181.  
  182. Polinom& Polinom::operator*(Polinom& polinom)
  183. {
  184.     Polinom temp = *this;
  185.  
  186.     for (int i = 0; i < nrMonoame; i++)
  187.     {
  188.         for (int j = 0; j < polinom.nrMonoame; j++)
  189.         {
  190.             int grad = data[i].GetGrad() + polinom.data[j].GetGrad();
  191.             double coef = data[i].GetCoeficient() * polinom.data[j].GetCoeficient();
  192.  
  193.             Monom monom(grad, coef);
  194.             temp.AddMonom(monom);
  195.         }
  196.     }
  197.  
  198.     return temp;
  199. }
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