Advertisement
Guest User

ddd

a guest
Jan 20th, 2019
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.24 KB | None | 0 0
  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. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement