Advertisement
Guest User

Untitled

a guest
Mar 25th, 2017
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.31 KB | None | 0 0
  1. //main
  2.  
  3. #include "wielomian.h"
  4.  
  5. using namespace std;
  6.  
  7. int main()
  8. {
  9. double wsp[3];
  10. wsp[0]=1;
  11. wsp[1]=2;
  12. wsp[2]=3;
  13. wielomian *w, *k;
  14. printf("test\n");
  15. w = new wielomian(2,wsp);
  16. printf("test2\n");
  17. cout<<w;
  18.  
  19. return 0;
  20. }
  21.  
  22.  
  23.  
  24.  
  25.  
  26. //funkcje
  27.  
  28. #include "wielomian.h"
  29.  
  30. using namespace std;
  31.  
  32. wielomian::wielomian(int st, double wsp) : stopien(st)
  33. {
  34. wspolczynniki = new double[st+1];
  35. wspolczynniki[0] = wsp;
  36. }
  37.  
  38. wielomian::wielomian(int st, const double wsp[]) : stopien(st)
  39. {
  40. wspolczynniki = new double[st+1];
  41. if(wsp[st]==0)
  42. throw string("Wspolczynnik przy najwiekszej potedze jest rowny zero zatem stopien jest bledny!\n");
  43. for(int i=0; i<st; i++)
  44. {
  45. wspolczynniki[i]=wsp[i];
  46. }
  47. }
  48.  
  49. wielomian::wielomian (std::initializer_list<double> wsp)
  50. {
  51. // int pom = 0;
  52. // while(wsp.end()-pom == 0 || wsp.end()-pom == wsp.begin())
  53. // pom++;
  54. for(auto iterator = wsp.begin(); iterator != wsp.end(); stopien++, iterator++)
  55. {
  56. wspolczynniki[stopien] = *iterator;
  57. }
  58. }
  59.  
  60. wielomian::~wielomian()
  61. {
  62. delete[] wspolczynniki;
  63. }
  64.  
  65. wielomian::wielomian(const wielomian &pierwotny)
  66. {
  67. stopien = pierwotny.stopien;
  68. for (int i=0 ; i<stopien; i++)
  69. wspolczynniki[i] = pierwotny.wspolczynniki[i];
  70. }
  71.  
  72.  
  73. wielomian::wielomian(wielomian &&pierwotny)
  74. {
  75. stopien = pierwotny.stopien;
  76. wspolczynniki = pierwotny.wspolczynniki;
  77. pierwotny.wspolczynniki = nullptr;
  78. }
  79.  
  80. wielomian& wielomian::operator = (const wielomian &pierwotny)
  81. {
  82. this->~wielomian();
  83.  
  84. stopien = pierwotny.stopien;
  85. for (int i=0 ; i<stopien; i++)
  86. wspolczynniki[i] = pierwotny.wspolczynniki[i];
  87. return *this;
  88. }
  89.  
  90. wielomian& wielomian::operator = (wielomian &&pierwotny)
  91. {
  92. this->~wielomian();
  93.  
  94. stopien = pierwotny.stopien;
  95. wspolczynniki = pierwotny.wspolczynniki;
  96. pierwotny.wspolczynniki = nullptr;
  97.  
  98. return *this;
  99. }
  100.  
  101. istream& operator >> (istream &we, wielomian &wzor)
  102. {
  103. we >> wzor.stopien;
  104. for (int i=0; i<=wzor.stopien; i++)
  105. {
  106. we >> wzor.wspolczynniki[i];
  107. }
  108. return we;
  109. }
  110.  
  111. ostream& operator << (ostream &wy, const wielomian &wzor)
  112. {
  113. for (int i=wzor.stopien; i>=1; i++)
  114. {
  115. wy << wzor.wspolczynniki[i] << "*x^" << i << " + ";
  116. }
  117. wy << wzor.wspolczynniki[0] << endl;
  118. return wy;
  119. }
  120.  
  121. wielomian operator +(const wielomian &u, const wielomian &v)
  122. {
  123. if(u.stopien > v.stopien)
  124. {
  125. for (int i=0; i<=v.stopien; i++)
  126. {
  127. u.wspolczynniki[i] = u.wspolczynniki[i] + v.wspolczynniki[i];
  128. }
  129. return u;
  130. }
  131. for (int i=0; i<=u.stopien; i++)
  132. {
  133. v.wspolczynniki[i] = u.wspolczynniki[i] + v.wspolczynniki[i];
  134. }
  135. return v;
  136. }
  137.  
  138.  
  139.  
  140.  
  141. //deklaracje
  142.  
  143. #include <iostream>
  144. #include <string>
  145.  
  146. class wielomian
  147. {
  148.  
  149. private:
  150. int stopien; // stopieñ wielomianu
  151. double *wspolczynniki; // wspó³czynniki wielomianu
  152.  
  153. public:
  154. wielomian(int st=0, double wsp=1.0); // konstruktor tworz¹cy jednomian
  155. wielomian(int st, const double wsp[]); // konstruktor tworz¹cy wielomian
  156. wielomian(std::initializer_list<double> wsp); // lista wspó³czynników
  157. wielomian(const wielomian &pierwotny); // konstruktor kopij¹cy
  158. wielomian(wielomian &&pierwotny); // konstruktor przenosz¹cy
  159. wielomian& operator = (const wielomian &w); // przypisanie kopij¹ce
  160. wielomian& operator = (wielomian &&w); // przypisanie przenosz¹ce
  161. ~wielomian (); // destruktor
  162.  
  163. friend std::istream& operator >> (std::istream &we, wielomian &w);
  164. friend std::ostream& operator << (std::ostream &wy, const wielomian &w);
  165. friend wielomian operator + (const wielomian &u, const wielomian &v);
  166. // friend wielomian operator - (const wielomian &u, const wielomian &v);
  167. // friend wielomian operator * (const wielomian &u, const wielomian &v);
  168. // //friend wielomian operator * (double c);
  169. // wielomian& operator += (const wielomian &v);
  170. // wielomian& operator -= (const wielomian &v);
  171. // wielomian& operator *= (const wielomian &v);
  172. // wielomian& operator *= (double c);
  173. // double operator () (double x) const; // obliczenie wartoœci wielomianu w x-sie
  174. // double operator [] (int i) const; // odczytanie i-tego wspó³czynnika
  175. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement