Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<cmath>
- #include<math.h>
- #include<string>
- using namespace std;
- class Macierz
- {
- private:
- int ilosc_rownan, kolumna, rownanie;
- double **macierz;
- public:
- double round(double fValue)
- {
- return fValue < 0 ? ceil(fValue - 0.5)
- : floor(fValue + 0.5);
- }
- void wpisz_macierz()
- {
- cout << "Podaj ilosc rownan: ";
- cin >> ilosc_rownan;
- double **macierz = new double * [ilosc_rownan];
- for (int x = 0; x < ilosc_rownan; x++)
- {
- macierz[x] = new double[kolumna];
- for (int y = 0; y < ilosc_rownan+1; y++)
- {
- if (y < ilosc_rownan)
- {
- cout << "A[" << x + 1 << ',' << y + 1 << ']';
- }
- else
- {
- cout << "B[" << x + 1 << ']';
- }
- cin >> macierz[x][y];
- }
- }
- }
- void zaokraglij_macierz()
- {
- for (int x = 0; x < ilosc_rownan; x++)
- {
- for (int y = 0; y < ilosc_rownan + 1; y++)
- {
- macierz[x][y] = round(macierz[x][y]);
- }
- }
- }
- void wyswietl_macierz()
- {
- for (int x = 0; x < ilosc_rownan; x++)
- {
- for (int y = 0; y < ilosc_rownan + 1; y++)
- {
- if (y < ilosc_rownan)
- {
- cout << macierz[x][y] << ' ';
- }
- else
- {
- cout << "| " << macierz[x][y];
- }
- }
- cout << endl;
- }
- }
- void wyswietl_wynik()
- {
- for (int x = 0; x < ilosc_rownan; x++)
- {
- cout << "x" << x + 1 << ':' << macierz[x][ilosc_rownan];
- }
- }
- void metoda_gaussa()
- {
- for (kolumna = 0; kolumna < ilosc_rownan; kolumna++)
- {
- double max = macierz[kolumna][kolumna];
- rownanie = kolumna;
- for (int wiersz = kolumna; wiersz < ilosc_rownan; wiersz++)
- {
- if (abs(macierz[wiersz][kolumna]) > max)
- {
- max = abs(macierz[wiersz][kolumna]);
- rownanie = wiersz;
- }
- }
- if (abs(max) < 1.E-20)
- {
- cout << "Macierz osobliwa" << endl; break;
- }
- for (int x = kolumna; x < ilosc_rownan + 1; x++)
- {
- double zmienna_tymczasowa = macierz[kolumna][x];
- macierz[kolumna][x] = macierz[rownanie][x];
- macierz[rownanie][x] = zmienna_tymczasowa;
- }
- double pole = macierz[kolumna][kolumna];
- for (int x = kolumna; x < ilosc_rownan + 1; x++)
- {
- double zmienna_tymczasowa = macierz[kolumna][x] / pole;
- macierz[kolumna][x] = zmienna_tymczasowa;
- }
- for (int x = 0; x < ilosc_rownan; x++)
- {
- if (x != kolumna)
- {
- double g = macierz[x][kolumna];
- for (int y = kolumna; y < ilosc_rownan + 1; y++)
- {
- macierz[x][y] -= (g * macierz[kolumna][y]);
- }
- }
- }
- }
- }
- };
- int main()
- {
- Macierz *obiekt = new Macierz();
- obiekt->wpisz_macierz();
- cout << "Twoja macierz: " << endl;
- obiekt->wyswietl_macierz();
- obiekt->metoda_gaussa();
- obiekt->zaokraglij_macierz();
- cout << "Macierz po zaokragleniu: " << endl;
- obiekt->wyswietl_macierz();
- cout << "Wynik: " << endl;
- obiekt->wyswietl_wynik();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement