Advertisement
Hiitsu

Macierz

Jun 18th, 2017
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.45 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdlib>
  3. #include <ctime>
  4.  
  5. using namespace std;
  6.  
  7. class macierz
  8. {
  9. int wiersze;
  10. int kolumny;
  11. float * wsk;
  12. public:
  13. macierz(int k, int w ); //konstruktor domyslny
  14. macierz(const macierz & m); //konstruktor kopiujacy
  15. macierz operator= (const macierz & m); //operator przypisania
  16. macierz operator+= (const macierz & m);
  17. macierz operator-= (const macierz & m);
  18. void wypisz(); // funkcja wypisujaca macierz na ekran
  19. void wpisz(); // funkcja inicjalizujaca wartosci macierzu
  20. void wpisz_losowe();
  21. friend istream & operator>> (istream & is, macierz & m);
  22. friend ostream & operator<<(ostream & os, const macierz & m); //operator wypisania na ekran
  23. ~macierz(); //destruktor
  24. };
  25.  
  26. macierz::macierz(int k,int w):kolumny(k),wiersze(w),wsk(new float[wiersze*kolumny]){};
  27. macierz::macierz(const macierz & m):kolumny(m.kolumny),wiersze(m.wiersze),wsk(new float[kolumny*wiersze])
  28. {
  29. for(int i=0;i<kolumny*wiersze;i++)
  30. {
  31. wsk[i]=m.wsk[i];
  32. }
  33. }
  34.  
  35. int main()
  36. { int x,y;
  37. cout<<"Podaj ilosc wierszy:";
  38. cin>>x;
  39. cout<<"Podaj ilosc kolumn:";
  40. cin>>y;
  41.  
  42. macierz m1(x,y);
  43. macierz m2(x,y);
  44. macierz m3(x,y);
  45.  
  46.  
  47.  
  48. cout << "Podaj wartosci macierzu m1" << endl;
  49. cin>>m1;
  50. //cout << "Podaj wartosci macierzu m2" << endl;
  51. //cin>>m2;
  52. m2.wpisz_losowe();
  53. m1.wypisz();
  54. m2.wypisz();
  55.  
  56. m2+=m1;
  57.  
  58. cout << "Twoj macierz ma wartosci:" << endl << m2 << endl;
  59.  
  60.  
  61. system("pause");
  62. }
  63.  
  64. macierz macierz::operator= (const macierz & m)
  65. {
  66. if(wiersze!=m.wiersze || kolumny!=m.kolumny)
  67. {
  68. delete wsk;
  69. wiersze=m.wiersze;
  70. kolumny=m.kolumny;
  71. wsk = new float[wiersze*kolumny];
  72. }
  73. for(int i=0;i<wiersze*kolumny;i++)
  74. {
  75. wsk[i]=m.wsk[i];
  76. }
  77. return *this;
  78. }
  79. macierz macierz::operator+= (const macierz & m)
  80. {
  81. if(wiersze!=m.wiersze || kolumny!=m.kolumny)
  82. {
  83. cout<<"Macierze te nie można dodawać do siebie"<<endl;
  84. return *this;
  85. }
  86. else
  87. {
  88. for(int i=0;i<wiersze*kolumny;i++)
  89. {
  90. wsk[i]=wsk[i]+m.wsk[i];
  91. }
  92. return *this;
  93. }
  94. }
  95.  
  96. macierz macierz::operator-= (const macierz & m)
  97. {
  98. if(wiersze!=m.wiersze || kolumny!=m.kolumny)
  99. {
  100. cout<<"Macierze te nie można dodawać do siebie"<<endl;
  101. return *this;
  102. }
  103. else
  104. {
  105. for(int i=0;i<wiersze*kolumny;i++)
  106. {
  107. wsk[i]=wsk[i]-m.wsk[i];
  108. }
  109. return *this;
  110. }
  111. }
  112. void macierz::wypisz()
  113. {
  114. for(int i=1;i<=wiersze*kolumny;i++)
  115. {
  116. if (i%wiersze==0) cout<<endl;
  117. cout<<wsk[i]<<" ";
  118. }
  119. }
  120. void macierz::wpisz()
  121. {
  122. for(int i=1;i<=wiersze*kolumny;i++)
  123. {
  124. cin>>wsk[i];
  125. }
  126. }
  127. void macierz::wpisz_losowe()
  128. {
  129. srand(time(NULL)); // Inicjalizujemy ziarno pseudolosowości
  130. for (int i = 0; i<wiersze*kolumny; i++)
  131. {
  132.  
  133. this->wsk[i]=(rand()%666)+1; // Wpisujemy losowe wartości
  134.  
  135. }
  136. }
  137. istream & operator>> (istream & is, macierz & m)
  138. {
  139. for (int i=0;i<m.wiersze*m.kolumny;i++)
  140. {
  141. is>>m.wsk[i];
  142. }
  143. return is;
  144. }
  145. ostream & operator<< (ostream & os, const macierz & m)
  146. {
  147. for(int i=0;i<m.wiersze*m.kolumny;i++)
  148. {
  149. if (i%m.wiersze==0) os<<endl;
  150. os<<m.wsk[i]<<" ";
  151. }
  152. return os;
  153. }
  154. macierz::~macierz(){delete wsk;}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement