Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstring>
- #include <cmath>
- #include <stdlib.h>
- using namespace std;
- float macierz[3][3];
- float druga_macierz[3][3];
- float macierz_wynikowa[3][3];
- int i, j, k, menu, det;
- void WyswietlMenu()
- {
- cout << endl << "1) Wypisz pierwsza macierz" << endl
- << "2) Wypisz druga macierz" << endl << "3) Dodaj macierze" << endl << "4) Pomnoz macierze" << endl
- << "5) Wyznacznik pierwszej macierzy" << endl << "6) Wyznacznik drugiej macierzy" << endl
- << "7) Macierz odwrotna pierwszej macierzy" << endl << "8) Macierz odwrotna drugiej macierzy" <<
- endl << "9) Rownanie liniowe" << endl
- << "Aby zakonczyc dzialanie programu, wcisnij dowolony inny klawisz" << endl;
- }
- void WczytajMacierz(float tab[3][3], float tab1[3][3])
- {
- float element_macierzy;
- cout << "Podaj dane do pierwszej macierzy: " << endl; // dane uzupełniane są wierszami
- for (i = 0; i < 3; i++){
- for(j = 0; j < 3; j++) {
- cin >> element_macierzy;
- tab[i][j] = element_macierzy;
- }
- }
- cout << "Podaj dane do drugiej macierzy: " << endl; // dane uzupełniane są wierszami
- for (i = 0; i < 3; i++){
- for(j = 0; j < 3; j++) {
- cin >> element_macierzy;
- tab1[i][j] = element_macierzy;
- }
- }
- }
- void Wypisz(float tab[3][3])
- {
- cout << "Macierz: " << endl;
- for (i = 0; i < 3; i++){
- for(j = 0; j < 3; j++) {
- cout << tab[i][j] << " ";
- }
- cout << endl;
- }
- }
- void Dodawanie_Macierzy(float tabA[3][3], float tabB[3][3], float tabC[3][3])
- {
- for (i = 0; i < 3; i++){
- for(j = 0; j < 3; j++) {
- tabC[i][j] = tabA[i][j] + tabB[i][j];
- }
- }
- Wypisz(tabC);
- }
- void Mnozenie_Macierzy(float tabA[3][3], float tabB[3][3], float tabC[3][3])
- {
- int suma = 0;
- for (i = 0; i < 3; i++) {
- for(j = 0; j < 3; j++) {
- suma = 0;
- for(k = 0; k < 3; k++) {
- suma += tabA [i][k] * tabB [k][j];
- tabC [i][j] = suma;
- }
- }
- }
- Wypisz(tabC);
- }
- int Wyznacznik (float tab[3][3])
- {
- float d1, d2, det;
- d1 = (tab[0][0] * tab[1][1] * tab[2][2]) + (tab[0][1] * tab[1][2] * tab[2][0]) + (tab[0][2] * tab[1][0] * tab[2][1]);
- d2 = (tab[0][2] * tab[1][1] * tab[2][0]) + (tab[0][0] * tab[1][2] * tab[2][1]) + (tab[0][1] * tab[1][0] * tab[2][2]);
- det = d1 - d2;
- return det;
- }
- void MacierzOdwrotna (float tab[3][3])
- {
- const float det1 = Wyznacznik(tab);
- if (det1 == 0) {
- cout << "Macierz odwrotna nie istnieje! " << endl;
- } else {
- float invdet = 1 / det1;
- float minv[3][3];
- minv[0][0] = (tab[1][1] * tab[2][2] - tab[2][1] * tab[1][2]) * invdet;
- minv[0][1] = (tab[0][2] * tab[2][1] - tab[0][1] * tab[2][2]) * invdet;
- minv[0][2] = (tab[0][1] * tab[1][2] - tab[0][2] * tab[1][1]) * invdet;
- minv[1][0] = (tab[1][2] * tab[2][0] - tab[1][0] * tab[2][2]) * invdet;
- minv[1][1] = (tab[0][0] * tab[2][2] - tab[0][2] * tab[2][0]) * invdet;
- minv[1][2] = (tab[1][0] * tab[0][2] - tab[0][0] * tab[1][2]) * invdet;
- minv[2][0] = (tab[1][0] * tab[2][1] - tab[2][0] * tab[1][1]) * invdet;
- minv[2][1] = (tab[2][0] * tab[0][1] - tab[0][0] * tab[2][1]) * invdet;
- minv[2][2] = (tab[0][0] * tab[1][1] - tab[1][0] * tab[0][1]) * invdet;
- Wypisz(minv);
- }
- }
- void RownanieLiniowe (float tabA[3][3], float tabB[3][3], float tabC[3][3])
- {
- int x;
- cout << "Wprowadz liczbe x: " << endl;
- cin >> x;
- for (i = 0; i < 3; i++) {
- for (j = 0; j < 3; j ++) {
- tabA[i][j] = tabA[i][j] * x;
- }
- }
- cout << endl;
- for (i = 0; i < 3; i++) {
- for (j = 0; j < 3; j ++) {
- tabC[i][j] = tabA[i][j] + tabB[i][j];
- }
- }
- Wypisz(tabC);
- }
- int main()
- {
- cout << "Program obliczajacy dzialania na macierzach. Najpierw wprowadź dwie macierze. " << endl;
- WczytajMacierz(macierz, druga_macierz);
- cout << "Jakie dzialania chcesz podjac? Wybierz z listy: " << endl;
- menu = 100;
- WyswietlMenu();
- while(menu){
- cin >> menu;
- switch (menu)
- {
- case 1:
- cout << "Macierz pierwsza: " << endl;
- Wypisz(macierz);
- WyswietlMenu();
- break;
- case 2:
- cout << "Macierz druga: " << endl;
- Wypisz(druga_macierz);
- WyswietlMenu();
- break;
- case 3:
- cout << "Wynik dodawania: " << endl;
- Dodawanie_Macierzy(macierz, druga_macierz, macierz_wynikowa);
- cout << endl;
- WyswietlMenu();
- break;
- case 4:
- cout << "Wynik mnozenia: " << endl;
- Mnozenie_Macierzy(macierz, druga_macierz, macierz_wynikowa);
- cout << endl;
- WyswietlMenu();
- break;
- case 5:
- cout << "Wyznacznik pierwszej macierzy: " << endl;
- cout << Wyznacznik(macierz);
- cout << endl;
- WyswietlMenu();
- break;
- case 6:
- cout << "Wyznacznik drugiej macierzy: " << endl;
- cout << Wyznacznik(druga_macierz);
- cout << endl;
- WyswietlMenu();
- break;
- case 7:
- cout << "Macierz odwrotna dla pierwszej macierzy: " << endl;
- MacierzOdwrotna(macierz);
- cout << endl;
- WyswietlMenu();
- break;
- case 8:
- cout << "Macierz odwrotna dla drugiej macierzy: " << endl;
- MacierzOdwrotna(druga_macierz);
- cout << endl;
- WyswietlMenu();
- case 9:
- cout << "Równanie liniowe: " << endl;
- RownanieLiniowe(macierz, druga_macierz, macierz_wynikowa);
- cout << endl;
- WyswietlMenu();
- break;
- default:
- cout << "Dziekujemy za korzystanie z programu!" << endl;
- exit(0);
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement