Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*Wprowadź z klawiatury rozmiar macierzy(klasa) kwadratowej (<=5) a następnie elementy dwóch takich macierzy (typ float)
- wyznacz iloczyn tych macierzy w sposób ogólny tj umożliwiających mnożenie także dużych macierzy skorzystaj
- z metody wyznaczającej iloczyn skalarny wiersza i kolumny macierzy*/
- #include <iostream>
- using namespace std;
- class matrix
- {
- float ** macierz; // wskaźnik na wskaźniki do typu float - nasza macierz
- int size = 0; // zmienna przechowujaca wielkosc
- public:
- matrix(int); // konstruktor przyjmujacy typ int w argumentach
- float* operator[](int part) { return macierz[part]; }; //przeciazony operator [] tak aby mozna bylo uzywac naszej klasy jak normalnej tablicy(macierzy)
- void operator*(matrix& mnoznik); // przeciazony operator mnozenia
- void wys_macierz();// wyswietla macierz
- ~matrix(); // destruktor
- };
- matrix::matrix(int size) : size(size)
- {
- macierz = new float*[size]; // rezerwacja pamieci dla wierszy
- for (int i = 0; i < size; i++)
- macierz[i] = new float[size]; // rezerwacja pamieci dla kolumn
- for (int i = 0; i < size; ++i)
- {
- for (int j = 0; j < size; ++j)
- {
- cout << "Podaj [" << i + 1 << "][" << j + 1 << "]" << endl;
- cin >> macierz[i][j]; // wprowadzanie danych do macierzy
- }
- }
- }
- void matrix::wys_macierz()
- {
- for (int i = 0; i < size; ++i)
- {
- for (int j = 0; j < size; ++j)
- {
- cout << macierz[i][j] << " ";
- }
- cout << endl;
- }
- }
- void matrix::operator*(matrix& mnoznik)
- {
- float temp;
- for (int i = 0; i < size; ++i)
- {
- for (int j = 0; j < mnoznik.size; ++j)
- {
- temp = 0;
- for (int l = 0; l < size; ++l)
- {
- temp = temp + macierz[i][l] * mnoznik.macierz[l][j]; //mnozenie dwoch macierzy zgodnie z wzorem https://pl.wikipedia.org/wiki/Mnożenie_macierzy
- }
- cout << temp << " ";
- }
- cout << endl;
- }
- }
- matrix::~matrix()
- {
- for (int i = 0; i < size; i++)
- delete[] macierz[i]; // czyszczenie pamieci kolumn
- delete[] macierz; //czyszczenie pamieci wierszy
- }
- int main()
- {
- constexpr float max_size = 5; //maksymalna wielkosc macierzy okreslona w tresci zadania, constexpr oznacza ze zmienna jest oblicza w trakcie czasu kompilacji
- int size = 0;
- while (size > max_size || size <= 0) // wykonuje dopoki podany rozmiar nie nalezy do (0,5>
- {
- cout << "Podaj rozmiar macierzy" << endl;
- cin >> size;
- };
- matrix macierz_1(size); // tworzenie macierzy o podanym rozmiarze
- matrix macierz_2(size); // tworzenie drugiej macierzy o podanym rozmiarze
- cout << "Macierz 1:" << endl;
- macierz_1.wys_macierz();
- cout << "Macierz 2:" << endl;
- macierz_2.wys_macierz();
- cout << "Pomnozone macierze:" << endl;
- macierz_1*macierz_2;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement