Advertisement
Guest User

asd

a guest
Feb 21st, 2020
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.85 KB | None | 0 0
  1. #include "Polinomio.h"
  2.  
  3. Polinomio::Polinomio()
  4. {
  5. for (int i = 0; i < 30; i++)
  6. {
  7. coeficientes[i] = 0;
  8. exponentes[i] = 0;
  9. }
  10. }
  11.  
  12. Polinomio::~Polinomio()
  13. {
  14.  
  15. }
  16.  
  17. void Polinomio::ingresarTerminos()
  18. {
  19. int exponente, coeficiente;
  20. cout << "Ingrese cantidad de terminos Polinomio: ";
  21. cin >> this->cantidad;
  22. for (int i = 0; i < this->cantidad; i++)
  23. {
  24. cout << "Ingrese coeficiente: ";
  25. cin >> coeficiente;
  26. cout << "Ingrese exponente: ";
  27. cin >> exponente;
  28.  
  29. coeficientes[i] = coeficiente;
  30. exponentes[i] = exponente;
  31. }
  32. ordenar_Polinomio();
  33. }
  34.  
  35. void Polinomio::ordenar_Polinomio()
  36. {
  37. int copia, copia2;
  38. for (int i = 0; i < this->cantidad; i++)
  39. {
  40. for (int j = 0; j < this->cantidad-1; j++)
  41. {
  42. if (exponentes[i] > exponentes[j])
  43. {
  44. copia = exponentes[i];
  45. exponentes[i] = exponentes[j];
  46. exponentes[j] = copia;
  47. copia2 = coeficientes[i];
  48. coeficientes[i] = coeficientes[j];
  49. coeficientes[j] = copia2;
  50. }
  51. }
  52.  
  53. }
  54. }
  55.  
  56. Polinomio& operator+(const Polinomio& a, const Polinomio& b)
  57. {
  58. Polinomio suma;
  59. if (a.cantidad > b.cantidad)
  60. {
  61. for (int i = 0; i < a.cantidad; i++)
  62. {
  63. if (suma.coeficientes[i] == 0)
  64. {
  65. if (a.coeficientes[i] != 0 && b.coeficientes[i] != 0)
  66. {
  67. if (a.exponentes == b.exponentes)
  68. {
  69. suma.coeficientes[i] = a.coeficientes[i] + b.coeficientes[i];
  70. suma.exponentes[i] = a.exponentes[i];
  71. }
  72. else
  73. {
  74. suma.coeficientes[i] = a.coeficientes[i];
  75. suma.coeficientes[i + 1] = b.coeficientes[i];
  76. suma.exponentes[i] = a.exponentes[i];
  77. suma.exponentes[i + 1] = b.exponentes[i];
  78. }
  79. }
  80. else if (a.coeficientes[i] != 0 && b.coeficientes[i] == 0)
  81. {
  82. suma.coeficientes[i] = a.coeficientes[i];
  83. suma.exponentes[i] = a.exponentes[i];
  84. }
  85. }
  86. }
  87. }
  88. else
  89. {
  90. for (int i = 0; i < b.cantidad; i++)
  91. {
  92. if (suma.coeficientes[i] == 0)
  93. {
  94. if (a.coeficientes[i] != 0 && b.coeficientes[i] != 0)
  95. {
  96. if (a.exponentes[i] == b.exponentes[i])
  97. {
  98. suma.coeficientes[i] = a.coeficientes[i] + b.coeficientes[i];
  99. suma.exponentes[i] = a.exponentes[i];
  100. }
  101. else
  102. {
  103. suma.coeficientes[i] = a.coeficientes[i];
  104. suma.coeficientes[i + 1] = b.coeficientes[i];
  105. suma.exponentes[i] = a.exponentes[i];
  106. suma.exponentes[i + 1] = b.exponentes[i];
  107. }
  108. }
  109. else if (a.coeficientes[i] == 0 && b.coeficientes[i] != 0)
  110. {
  111. suma.coeficientes[i] = b.coeficientes[i];
  112. suma.exponentes[i] = b.exponentes[i];
  113. }
  114. }
  115. }
  116. }
  117. int cont = 0;
  118. for (int i = 0; i < 30; i++)
  119. {
  120. if (suma.coeficientes[i] != 0)
  121. {
  122. cont++;
  123. }
  124. }
  125. suma.cantidad = cont;
  126. suma.ordenar_Polinomio();
  127. return suma;
  128. }
  129.  
  130. Polinomio& operator-(const Polinomio& a, const Polinomio& b)
  131. {
  132. Polinomio resta;
  133. if (a.cantidad > b.cantidad)
  134. {
  135. for (int i = 0; i < a.cantidad; i++)
  136. {
  137. if (resta.coeficientes[i] == 0)
  138. {
  139. if (a.coeficientes[i] != 0 && b.coeficientes[i] != 0)
  140. {
  141. if (a.exponentes[i] == b.exponentes[i])
  142. {
  143. resta.coeficientes[i] = a.coeficientes[i] - b.coeficientes[i];
  144. resta.exponentes[i] = a.exponentes[i];
  145. }
  146. else
  147. {
  148. resta.coeficientes[i] = a.coeficientes[i];
  149. resta.coeficientes[i + 1] = b.coeficientes[i];
  150. resta.exponentes[i] = a.exponentes[i];
  151. resta.exponentes[i + 1] = b.exponentes[i];
  152. }
  153. }
  154. else if (a.coeficientes[i] != 0 && b.coeficientes[i] == 0)
  155. {
  156. resta.coeficientes[i] = a.coeficientes[i];
  157. resta.exponentes[i] = a.exponentes[i];
  158. }
  159. }
  160. }
  161. }
  162. else if (a.cantidad < b.cantidad)
  163. {
  164. for (int i = 0; i < b.cantidad; i++)
  165. {
  166. if (resta.coeficientes[i] == 0)
  167. {
  168. if (a.coeficientes[i] != 0 && b.coeficientes[i] != 0)
  169. {
  170. if (a.exponentes == b.exponentes)
  171. {
  172. resta.coeficientes[i] = a.coeficientes[i] - b.coeficientes[i];
  173. resta.exponentes[i] = a.exponentes[i];
  174. }
  175. else
  176. {
  177. resta.coeficientes[i] = a.coeficientes[i];
  178. resta.coeficientes[i + 1] = b.coeficientes[i];
  179. resta.exponentes[i] = a.exponentes[i];
  180. resta.exponentes[i + 1] = b.exponentes[i];
  181. }
  182. }
  183. else if (a.coeficientes[i] == 0 && b.coeficientes[i] != 0)
  184. {
  185. resta.coeficientes[i] = b.coeficientes[i];
  186. resta.exponentes[i] = b.exponentes[i];
  187. }
  188. }
  189. }
  190. }
  191. int cont = 0;
  192. for (int i = 0; i < 30; i++)
  193. {
  194. if (resta.coeficientes[i] != 0)
  195. {
  196. cont++;
  197. }
  198. }
  199. resta.cantidad = cont;
  200. resta.ordenar_Polinomio();
  201. return resta;
  202. }
  203.  
  204. ostream& operator<<(ostream& out,const Polinomio& a)
  205. {
  206. for (int i = 0; i < a.cantidad; i++)
  207. {
  208. for (int j = 0; j < a.cantidad; j++)
  209. {
  210. if (a.exponentes[j] != 0)
  211. {
  212. if (a.exponentes[j] == 1)
  213. {
  214. out << a.coeficientes[j] << "x" << " ";
  215. }
  216. else if (a.exponentes[j] > 1)
  217. {
  218. out << a.coeficientes[j] << "x^" << a.exponentes[j] << " ";
  219. }
  220. }
  221. }
  222. out << endl;
  223. }
  224. return out;
  225. }
  226.  
  227. Polinomio& operator*(const Polinomio& a, const Polinomio& b)
  228. {
  229. Polinomio mult;
  230.  
  231. if (a.cantidad > b.cantidad)
  232. {
  233. for (int i = 0; i < a.cantidad; i++)
  234. {
  235. for (int j = 0; j < b.cantidad; j++)
  236. {
  237. mult.coeficientes[j] = a.coeficientes[i] * b.coeficientes[j];
  238. if (a.exponentes[i] == b.exponentes[j])
  239. {
  240. mult.exponentes[j] = b.exponentes[j];
  241. }
  242.  
  243. }
  244. }
  245. }
  246.  
  247. if (a.cantidad < b.cantidad)
  248. {
  249. for (int i = 0; i < a.cantidad; i++)
  250. {
  251. for (int j = 0; j < b.cantidad; j++)
  252. {
  253. mult.coeficientes[j] = b.coeficientes[i] * a.coeficientes[j];
  254. if (b.exponentes[i] == a.exponentes[j])
  255. {
  256. mult.exponentes[j] = a.exponentes[j];
  257. }
  258.  
  259. }
  260. }
  261. }
  262.  
  263. int cantidad2 = 0;
  264. for (int i = 0; i < 30; i++)
  265. {
  266. if (mult.coeficientes[i] != 0)
  267. {
  268. cantidad2++;
  269. }
  270. }
  271.  
  272. mult.cantidad = cantidad2;
  273. mult.ordenar_Polinomio();
  274. return mult;
  275. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement