Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // main.cpp
- #include <iostream>
- #include "macierz.h"
- using namespace std;
- int main()
- {
- /*Macierz A(5,4,3);
- Macierz B(5,4,2);
- A.wypisz_macierz();
- cout << endl;
- B.wypisz_macierz();
- Macierz C = A + B;
- C.wypisz_macierz();
- cout << C[0][1] << endl;*/
- Macierz A(5, 5);
- A.wypisz_macierz();
- cout << endl;
- Macierz B(A);
- B.wypisz_macierz();
- Macierz C(2, 5, 10);
- C = B;
- cout << endl;
- C.wypisz_macierz();
- return 0;
- }
- // macierz.cpp
- #include <iostream>
- #include "macierz.h"
- #include <cstdlib>
- #include <ctime>
- using namespace std;
- /*
- class Macierz
- {
- int kolumny;
- int wiersze;
- float** wartosci;
- public:
- Macierz(int, int, float);
- Macierz(int, int);
- ~Macierz();
- void wypisz_macierz();
- float& operator[][](unsigned i, unsigned j);
- friend Macierz operator+(Macierz, Macierz);
- };
- */
- Macierz::Macierz(int w, int k, float val) : kolumny(k), wiersze(w)
- {
- if(wiersze == 0 && kolumny == 0)
- {
- wartosci = nullptr;
- return;
- }
- wartosci = new float*[w];
- for(int i = 0; i < w; ++i)
- wartosci[i] = new float[k];
- for(int i = 0; i < w; ++i)
- for(int j = 0; j < k; ++j)
- wartosci[i][j] = val;
- }
- Macierz::Macierz(int w, int k) : kolumny(k), wiersze(w)
- {
- if(wiersze == 0 && kolumny == 0)
- {
- wartosci = nullptr;
- return;
- }
- wartosci = new float*[w];
- srand(time(nullptr));
- for(int i = 0; i < w; ++i)
- wartosci[i] = new float[k];
- for(int i = 0; i < w; ++i)
- for(int j = 0; j < k; ++j)
- wartosci[i][j] = 100.0 * rand() / RAND_MAX;
- }
- void Macierz::wypisz_macierz()
- {
- if(wartosci == nullptr)
- {
- cout << "Macierz pusta" << endl;
- }
- for(int i = 0; i < wiersze; ++i)
- {
- for(int j = 0; j < kolumny; ++j)
- {
- cout << wartosci[i][j] << '\t';
- }
- cout << endl;
- }
- }
- Macierz::~Macierz()
- {
- //cout << 'x';
- for(int i = 0; i < wiersze; ++i)
- {
- delete[] wartosci[i];
- //cout << 'i';
- }
- delete[] wartosci;
- cout << "Destruktor\n";
- }
- float*& Macierz::operator[](unsigned i)
- {
- return wartosci[i];
- }
- Macierz operator+(Macierz A, Macierz B)
- {
- if(A.kolumny == B.kolumny && A.wiersze == B.wiersze)
- {
- Macierz wynik(B.wiersze, B.kolumny);
- for(int i = 0; i < B.wiersze; ++i)
- {
- for(int j = 0; j < B.kolumny; ++j)
- {
- wynik.wartosci[i][j] = A.wartosci[i][j] + B.wartosci[i][j];
- }
- }
- return wynik;
- }
- else
- {
- cout << "Rozne rozmiary macierzy" << endl;
- return Macierz(0,0);
- }
- }
- Macierz& Macierz::operator= (const Macierz& A)
- {
- if(&A != this) // sprawdzamy czy nie kopiujemy samego siebie
- {
- for(int i = 0; i < wiersze; ++i)
- delete[] wartosci[i];
- delete[] wartosci;
- wiersze = A.wiersze;
- kolumny = A.kolumny;
- wartosci = new float*[wiersze];
- for(int i = 0; i < wiersze; ++i)
- {
- wartosci[i] = new float[kolumny];
- for(int j = 0; j < kolumny; ++j)
- wartosci[i][j] = A.wartosci[i][j];
- }
- }
- return *this;
- }
- // macierz.h
- class Macierz
- {
- int kolumny;
- int wiersze;
- float** wartosci;
- public:
- Macierz(int, int, float);
- Macierz(int, int);
- ~Macierz();
- void wypisz_macierz();
- float*& operator[](unsigned);
- Macierz& operator= (const Macierz&);
- friend Macierz operator+(Macierz, Macierz);
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement