Advertisement
Guest User

Untitled

a guest
Mar 18th, 2018
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.41 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. class MACIERZE{
  6. friend ostream &operator << (ostream &s1, MACIERZE &o1);
  7. friend istream &operator >> (istream &s1, MACIERZE &o1);
  8.  
  9. double *ws;
  10. int wymiar;
  11. public:
  12.  
  13. MACIERZE(){
  14. ws = NULL; //BO WARTOSC POCZATKOWA TO NIE musi byc 0
  15. wymiar = 0;
  16. };
  17. ~MACIERZE(){
  18. if(ws != NULL){
  19. delete [] ws;
  20. ws = NULL;
  21. }
  22. };
  23.  
  24. MACIERZE &operator = (const MACIERZE & o1){
  25. if(this == &o1) {
  26. return *this;
  27. }
  28. if(this->ws != NULL){
  29. delete[] this->ws;
  30. //zarezerwowac nowy obszar
  31. }
  32. this->wymiar = o1.wymiar;
  33. this->ws = new double[this->wymiar*this->wymiar];
  34. //przeniesc elementy
  35.  
  36. for(int x=0; x < this->wymiar*this->wymiar; x++){
  37. this->ws[x] = o1.ws[x];
  38. }
  39. return *this;
  40. }
  41.  
  42. MACIERZE operator + (const MACIERZE &o2) {
  43. MACIERZE wynik;
  44.  
  45. wynik.wymiar = o2.wymiar;
  46. wynik.ws = new double[wynik.wymiar * wynik.wymiar];
  47. for(int a=0; a<this->wymiar * this->wymiar; a++) {
  48. wynik.ws[a] = this->ws[a] + o2.ws[a];
  49. }
  50. return wynik;
  51. }
  52.  
  53. MACIERZE operator - (const MACIERZE &o2) {
  54. MACIERZE wynik;
  55.  
  56. wynik.wymiar = o2.wymiar;
  57. wynik.ws = new double[wynik.wymiar * wynik.wymiar];
  58. for(int a=0; a < this->wymiar * this->wymiar; a++) {
  59. wynik.ws[a] = this->ws[a] - o2.ws[a];
  60. }
  61. return wynik;
  62. }
  63.  
  64. MACIERZE operator * (const MACIERZE &o2) { //dokończ
  65. MACIERZE wynik;
  66. wynik.wymiar = o2.wymiar;
  67. int suma, a, b;
  68.  
  69. for(int x=0; x < this->wymiar*this->wymiar; x+=wymiar) {
  70. for(int y=0; y < this->wymiar; y++) {
  71. suma = 0;
  72. a = y;
  73. for(int z=0; z < this->wymiar; z++) {
  74. suma += this->ws[z]*o2.ws[a];
  75. a+=wymiar;
  76. }
  77. wynik.ws[y] = suma;
  78. }
  79. }
  80.  
  81.  
  82. /*wynik.ws = new double[wynik.wymiar * wynik.wymiar];
  83. for(int x=0; x < this->wymiar*this->wymiar; x += wymiar) {
  84. for(int y=0; y<this->wymiar*this->wymiar; y += x) {
  85. for(int z=0; z <this->wymiar; z++) {
  86. wynik.ws[z] = this->ws[z]*o2.ws[z];
  87. }
  88. }
  89. //while zamiast for??
  90. }*/
  91.  
  92. return wynik;
  93. }
  94.  
  95. int operator == (MACIERZE &o2) {
  96. //if(a==b)
  97. //zwraca 0 lub 1
  98. for(int x=0; x < this->wymiar*this->wymiar; x++) {
  99. if(this->ws[x] != o2.ws[x]) {
  100. return 0;
  101. }
  102. return 1;
  103. }
  104. }
  105.  
  106. int operator < (MACIERZE &o2) {
  107. for(int x=0; x < this->wymiar*this->wymiar; x++) {
  108. if(this->ws[x] > o2.ws[x]) {
  109. return 0;
  110. }
  111. }
  112. return 1;
  113. }
  114.  
  115. int operator > (MACIERZE &o2) {
  116. for(int x=0; x < this->wymiar*this->wymiar; x++) {
  117. if(this->ws[x] < o2.ws[x]) {
  118. return 0;
  119. }
  120. }
  121. return 1;
  122. }
  123.  
  124. };
  125.  
  126.  
  127. ostream &operator << (ostream &s1, MACIERZE &o1){
  128. if(o1.ws != NULL){
  129. for(int i=0; i<o1.wymiar*o1.wymiar; i++){
  130. if(i%o1.wymiar == 0){
  131. s1 << endl;
  132. };
  133. s1 << o1.ws[i];
  134. }
  135. }
  136. return s1;
  137. }
  138.  
  139. istream & operator >> (istream &s1, MACIERZE &o1){ //to różne funkcje wiec nie marekurencji
  140. if(o1.ws != NULL){
  141. delete[] o1.ws;
  142. }
  143. s1 >> o1.wymiar;
  144. o1.ws = new double[o1.wymiar*o1.wymiar];
  145.  
  146. for(int j=0; j<o1.wymiar*o1.wymiar; j++){
  147. s1 >> o1.ws[j];
  148. }
  149. }
  150.  
  151. int main(void)
  152. {
  153. /*MACIERZE zm;
  154. cin >> zm;
  155. cout << zm;
  156. zm.~MACIERZE();
  157. zm.~MACIERZE();*/
  158. MACIERZE a, b, c;
  159. cin >> a;
  160. cin >> b;
  161. if(a > b) {
  162. cout << "a>b" << endl;
  163. }
  164. else {
  165. cout << "nah" << endl;
  166. }
  167. //c = a*b;
  168. //cout << c;
  169. return 0;
  170.  
  171. MACIERZE macierz;
  172.  
  173. cin >> macierz;
  174. cout << macierz;
  175. macierz.~MACIERZE();
  176. macierz.~MACIERZE();
  177. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement