Advertisement
Guest User

Implentation

a guest
Mar 25th, 2019
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.74 KB | None | 0 0
  1. #include"Poly.h"
  2. #include<iostream>
  3. #include<algorithm>
  4. using namespace std;
  5.  
  6. Poly::Poly()
  7. {
  8. for (int x = 0; x < 11; x++)
  9. {
  10. coeff[x] = 0;
  11. }
  12. degree = 0;
  13. }
  14. Poly::Poly(int c[], int d)
  15. {
  16. for (int x = 0; x < 11; x++)
  17. {
  18. coeff[x] = c[x];
  19. }
  20. degree = (d >= 0 ? d : 0);
  21. }
  22.  
  23. ostream &operator<<(ostream &output, Poly &p)
  24. {
  25. output << p.coeff[p.degree] << "x^" << p.degree;
  26.  
  27. for (int x = (p.degree - 1); x >= 0; x--)
  28. if (x == 0)
  29. {
  30. if (p.coeff[x] < 0)
  31. {
  32. output << " - " << abs(p.coeff[x]);
  33. }
  34. else
  35. {
  36. output << " + " << p.coeff[x];
  37. }
  38. }
  39. else if (p.coeff[x] < 0)
  40. {
  41. output << " - " << abs(p.coeff[x]) << "x^" << x;
  42. }
  43. else
  44. {
  45. output << " + " << p.coeff[x] << "x^" << x;
  46. }
  47. return output;
  48. }
  49.  
  50. Poly Poly::operator+(Poly &p)
  51. {
  52. const int deg = max(degree, p.degree);
  53. int sumCoeff[11] = { 0 };
  54.  
  55. for (int x = 0; x < 11; x++)
  56. {
  57. sumCoeff[x] = coeff[x] + p.coeff[x];
  58. }
  59. return Poly(sumCoeff, deg);
  60. }
  61.  
  62. Poly Poly::operator-(Poly &p)
  63. {
  64. const int deg = max(degree, p.degree);
  65. int sumCoeff[11] = { 0 };
  66.  
  67. for (int x = 0; x < 11; x++)
  68. {
  69. sumCoeff[x] = coeff[x] - p.coeff[x];
  70. }
  71. return Poly(sumCoeff, deg);
  72. }
  73.  
  74. Poly Poly::operator*(Poly &p)
  75. {
  76. int poly[11];
  77. for (int x = 0; x < 11; x++)
  78. {
  79. poly[x] = 0;
  80. }
  81. for (int x = degree; x >= 0; x--)
  82. {
  83. for (int y = p.degree; y >= 0; y--)
  84. {
  85. poly[x + y] += coeff[x] * p.coeff[y];
  86. }
  87. }
  88. for (int z = 10; z > 0; z--)
  89. {
  90. if (poly[z] != 0)
  91. {
  92. return Poly(poly, z);
  93. }
  94. }
  95. }
  96.  
  97. Poly Poly::operator=(Poly &p)
  98. {
  99. const int deg = max(degree, p.degree);
  100. int sumCoeff[11] = { 0 };
  101.  
  102. for (int x = 0; x < 11; x++)
  103. {
  104. sumCoeff[x] = coeff[x] = p.coeff[x];
  105. }
  106. return Poly(sumCoeff, deg);
  107. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement