Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstdlib>
- #include <ctime>
- using namespace std;
- class macierz{
- int w, k; //wiersze, koulmny
- double **wsk; //tu bêdzie tablica z danymi
- public:
- macierz(int wiersze, int kolumny);
- ~macierz(); //destruktor
- macierz(macierz &m); //konstruktor kopiuj¹cy
- macierz operator=(macierz &m)
- {
- macierz tmp(m); // wykorzystamy tu konstruktor kopiujący by nie powtarzać kopiowania
- return tmp; // zwracamy nasz obiekt
- }
- macierz operator+(macierz &m)
- {
- macierz tmp(m.w, m.k); // tworzymy obiekt macierzy który potem zwrócimy
- for (int i = 0; i<m.w; i++)
- {
- for (int j = 0; j<m.k; j++)
- {
- tmp.wsk[i][j]=this->wsk[i][j]+m.wsk[i][j]; // wykonujemy dodawanie macierzy - każdy wiersz, każda kolumna
- }
- }
- return tmp; // zwracamy nasz obiekt
- }
- void wpisz_wartosc(int x, int y, double val);
- void wpisz_losowe();
- void wypisz();
- };
- macierz::macierz(int wiersze, int kolumny)
- {
- wsk=new double*[wiersze]; // tworzymy tablicę wierszy - dwie gwiazdki sugerują, że to
- for (int i = 0; i<wiersze; i++) // będzie tablica dwuwymiarowa
- { //
- wsk[i]=new double[kolumny]; // w pętli tworzymy drugi wymiar tablicy, z kolumnami
- }
- this->w=wiersze; // dajemy do klasy ilość wierszy
- this->k=kolumny; // i ilość kolumn
- }
- macierz::~macierz()
- {
- for (int i = 0; i<w; i++) // destruktor usuwa z pamięci po kolei
- {
- delete[] wsk[i]; // wszystkie kolumny z każdego wiersza
- }
- delete[] wsk; // a na końcu całą tablicę
- }
- macierz::macierz(macierz &m)
- {
- wsk=new double*[m.w]; // analogicznie do głównego konstruktora, tworzymy
- for (int i = 0; i<m.w; i++) // tablicę wierszy
- { // po czym tworzymy w każdym wierszu kolummny
- wsk[i]=new double[m.k];
- }
- this->w=m.w; // podobnie ustawiamy ilość wierszy i kolumn w klasie
- this->k=m.k;
- for (int l = 0; l<m.w; l++)
- {
- for (int n = 0; n<m.k; n++)
- { // tą pętlą kopiujemy wiersz po wierszu, kolumnę po kolumnie
- wsk[l][n]=m.wsk[l][n]; // zawartość oryginalnej macierzy
- }
- }
- }
- void macierz::wpisz_wartosc(int x, int y, double val)
- {
- this->wsk[x][y]=val; // Ta funkcja tylko nam daje określoną wartość do komórki
- }
- void macierz::wpisz_losowe()
- {
- srand(time(NULL)); // Inicjalizujemy ziarno pseudolosowości
- for (int i = 0; i<this->w; i++)
- {
- for (int j = 0; j<this->k; j++)
- {
- this->wsk[i][j]=(rand()%666)+1; // Wpisujemy losowe wartości
- }
- }
- }
- void macierz::wypisz()
- {
- for (int i = 0; i<this->w; i++)
- {
- for (int j = 0; j<this->k; j++)
- {
- cout << "[" << i << ", " << j << "] = " << this->wsk[i][j] << endl;
- }
- }
- }
- int main()
- {
- macierz m1(10,10);
- macierz m2(10,10);
- macierz m3(10,10);
- m1.wpisz_losowe();
- m2.wpisz_losowe();
- cout << "Macierz m1: " << endl;
- m1.wypisz();
- cout << "Macierz m2: " << endl;
- m2.wypisz();
- cout << "Dodaje macierze m1 i m2" << endl;
- m3=m1+m2;
- cout << "A ich suma wynosi: " << endl;
- cout << endl;
- cout << "Macierz m3: " << endl;
- m3.wypisz();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement