Advertisement
Evilerus

Untitled

Jun 18th, 2017
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.92 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdlib>
  3. #include <ctime>
  4.  
  5. using namespace std;
  6.  
  7. class macierz{
  8.     int w, k; //wiersze, koulmny
  9.     double **wsk; //tu bêdzie tablica z danymi
  10.     public:
  11.         macierz(int wiersze, int kolumny);
  12.         ~macierz(); //destruktor
  13.         macierz(macierz &m); //konstruktor kopiuj¹cy
  14.         macierz operator=(macierz &m)
  15.         {
  16.                 macierz tmp(m);         // wykorzystamy tu konstruktor kopiujący by nie powtarzać kopiowania
  17.                 return tmp;             // zwracamy nasz obiekt
  18.         }
  19.         macierz operator+(macierz &m)
  20.         {
  21.                 macierz tmp(m.w, m.k);                                // tworzymy obiekt macierzy który potem zwrócimy
  22.                 for (int i = 0; i<m.w; i++)
  23.                 {
  24.                     for (int j = 0; j<m.k; j++)
  25.                     {
  26.                         tmp.wsk[i][j]=this->wsk[i][j]+m.wsk[i][j];    // wykonujemy dodawanie macierzy - każdy wiersz, każda kolumna
  27.                     }
  28.                 }
  29.                 return tmp;                                           // zwracamy nasz obiekt
  30.         }
  31.         void wpisz_wartosc(int x, int y, double val);
  32.         void wpisz_losowe();
  33.         void wypisz();
  34. };
  35.  
  36. macierz::macierz(int wiersze, int kolumny)
  37. {
  38.     wsk=new double*[wiersze];            // tworzymy tablicę wierszy - dwie gwiazdki sugerują, że to
  39.     for (int i = 0; i<wiersze; i++)        // będzie tablica dwuwymiarowa
  40.     {                                      //
  41.         wsk[i]=new double[kolumny];        // w pętli tworzymy drugi wymiar tablicy, z kolumnami
  42.     }
  43.     this->w=wiersze;                       // dajemy do klasy ilość wierszy
  44.     this->k=kolumny;                       // i ilość kolumn
  45. }
  46.  
  47. macierz::~macierz()
  48. {
  49.     for (int i = 0; i<w; i++)           // destruktor usuwa z pamięci po kolei
  50.     {
  51.         delete[] wsk[i];                // wszystkie kolumny z każdego wiersza
  52.     }
  53.     delete[] wsk;                       // a na końcu całą tablicę
  54. }
  55.  
  56. macierz::macierz(macierz &m)
  57. {
  58.     wsk=new double*[m.w];                // analogicznie do głównego konstruktora, tworzymy
  59.     for (int i = 0; i<m.w; i++)            // tablicę wierszy
  60.     {                                      // po czym tworzymy w każdym wierszu kolummny
  61.         wsk[i]=new double[m.k];
  62.     }
  63.     this->w=m.w;                           // podobnie ustawiamy ilość wierszy i kolumn w klasie
  64.     this->k=m.k;
  65.     for (int l = 0; l<m.w; l++)
  66.     {
  67.         for (int n = 0; n<m.k; n++)
  68.         {                                 // tą pętlą kopiujemy wiersz po wierszu, kolumnę po kolumnie
  69.             wsk[l][n]=m.wsk[l][n];        // zawartość oryginalnej macierzy
  70.         }
  71.     }
  72. }
  73.  
  74. void macierz::wpisz_wartosc(int x, int y, double val)
  75. {
  76.     this->wsk[x][y]=val;                                    // Ta funkcja tylko nam daje określoną wartość do komórki
  77. }
  78.  
  79. void macierz::wpisz_losowe()
  80. {
  81.     srand(time(NULL));                                      // Inicjalizujemy ziarno pseudolosowości
  82.     for (int i = 0; i<this->w; i++)
  83.     {
  84.         for (int j = 0; j<this->k; j++)
  85.         {
  86.             this->wsk[i][j]=(rand()%666)+1;                // Wpisujemy losowe wartości
  87.         }
  88.     }
  89. }
  90.  
  91. void macierz::wypisz()
  92. {
  93.     for (int i = 0; i<this->w; i++)
  94.     {
  95.         for (int j = 0; j<this->k; j++)
  96.         {
  97.             cout << "[" << i << ", " << j << "] = " << this->wsk[i][j] << endl;
  98.         }
  99.     }
  100. }
  101.  
  102. int main()
  103. {
  104.     macierz m1(10,10);
  105.     macierz m2(10,10);
  106.     macierz m3(10,10);
  107.     m1.wpisz_losowe();
  108.     m2.wpisz_losowe();
  109.     cout << "Macierz m1: " << endl;
  110.     m1.wypisz();
  111.     cout << "Macierz m2: " << endl;
  112.     m2.wypisz();
  113.     cout << "Dodaje macierze m1 i m2" << endl;
  114.     m3=m1+m2;
  115.     cout << "A ich suma wynosi: " << endl;
  116.     cout << endl;
  117.     cout << "Macierz m3: " << endl;
  118.     m3.wypisz();
  119.     return 0;
  120. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement