Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "pch.h"
- #include <iostream>
- #include <time.h>
- using namespace std;
- //funkcja rezerwuje pamiec na macierz
- void stworz_macierz(float **& tab,int n)
- {
- tab = new float *[n];
- for (int i = 0; i < n; i++)
- {
- tab[i] = new float[n];
- }
- }
- //funkcja wypelnia macierz liczbami wpisanymi z klawiatury
- void wypelnij_macierz(float **& tab,int n)
- {
- float tmp;
- for (int i = 0; i < n; i++)
- {
- for (int j = 0; j < n; j++)
- {
- cout << "Podaj wartosc o indeksie " << i + 1 << "x" << j + 1 << ": ";
- cin >> tmp;
- tab[i][j] = tmp;
- }
- }
- }
- //funkcja wypelnia macierz losowymi liczbami z zadnego przedzialu
- void wypelnij_macierz_losowo(float **& tab, int n)
- {
- int a, b;
- cout << "Losuj liczby z przedzialu od ";
- cin >> a;
- cout << "Losuj liczby z przedzialu od " << a << " do ";
- cin >> b;
- if (a < b)
- {
- for (int i = 0; i < n; i++)
- {
- for (int j = 0; j < n; j++)
- {
- tab[i][j] = rand() % abs((-1 * a) + b + 1) + a;
- }
- }
- }
- else
- {
- for (int i = 0; i < n; i++)
- {
- for (int j = 0; j < n; j++)
- {
- tab[i][j] = rand() % abs((-1 * a) + b + 1) + b;
- }
- }
- }
- }
- //funkcja zwalnia pamięć zajeta uprzednio przez macierz
- void zwolnij_pamiec(float **& tab, int n)
- {
- for (int i = 0; i < n; i++)
- {
- delete[] tab[i];
- }
- delete[] tab;
- }
- //funkcja liczy wyznacznik z macierzy stopnia drugiego a następnie wyswietla działanie oraz wynik
- void det_2(float **& tab, int n)
- {
- cout << "A =" << endl;
- for (int i = 0; i < n; i++)
- {
- for (int j = 0; j < n; j++)
- {
- cout << tab[i][j] << " ";
- }
- cout << endl;
- }
- float det = tab[0][0] * tab[1][1] - (tab[0][1] * tab[1][0]);
- cout << "detA = " << tab[0][0] << " * " << tab[1][1] << " - (" << tab[0][1] << " * " << tab[1][0] << ") = " << det << endl;
- }
- //funkcja liczy wyznacznik z macierzy stopnia trzeciego metoda Sarrusa a następnie wyswietla działanie oraz wynik
- void det_3(float **& tab, int n)
- {
- cout << "A =" << endl;
- for (int i = 0; i < n; i++)
- {
- for (int j = 0; j < n; j++)
- {
- cout << tab[i][j] << " ";
- }
- cout << endl;
- }
- float det = (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]) -
- (tab[2][0] * tab[1][1] * tab[0][2] + tab[2][1] * tab[1][2] * tab[0][0] + tab[2][2] * tab[1][0] * tab[0][1]);
- cout << "detA = " << "("<<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]<<") -" << endl;
- cout << " - (" << tab[2][0] << "*" << tab[1][1] << "*" << tab[0][2] << "+" << tab[2][1] << "*" << tab[1][2] << "*" << tab[0][0] << "+" << tab[2][2] << "*" << tab[1][0]<<"*" << tab[0][1] << ") = " << det << endl;
- }
- //funkcja liczy wyznacznik z macierzy stopnia trzeciego za pomocą rozwiniecia Laplace’a a następnie wyswietla działanie oraz wynik
- void det_3_laplace(float **& tab, int n)
- {
- cout << "A =" << endl;
- for (int i = 0; i < n; i++)
- {
- for (int j = 0; j < n; j++)
- {
- cout << tab[i][j] << " ";
- }
- cout << endl;
- }
- float det = (tab[0][0] * ((tab[1][1] * tab[2][2]) - (tab[1][2] * tab[2][1]))) -
- (tab[0][1] * ((tab[1][0] * tab[2][2]) - (tab[1][2] * tab[2][0]))) +
- (tab[0][2] * ((tab[1][0] * tab[2][1]) - (tab[1][1] * tab[2][0])));
- cout << "detA = " << tab[0][0] << "*(" << tab[1][1] << "*" << tab[2][2] << "-" << tab[1][2] << "*" << tab[2][1]<<")-" << endl;
- cout << "-" << tab[0][1] << "*(" << tab[1][0] << "*" << tab[2][2] << "-" << tab[1][2] << "*" << tab[2][0] << ")+" << endl;
- cout << "+" << tab[0][2] << "*(" << tab[1][0] << "*" << tab[2][1] << "-" << tab[1][1] << "*" << tab[2][0] << ") = " << det << endl;
- }
- //funkcja glowna zawierajaca menu oraz odwołania do poszczególnych funkcji
- int main()
- {
- srand(time(NULL));
- float **macierz = 0;
- int wybor_menu=0;
- while (wybor_menu != 7)
- {
- cout << "1. Wyznacznik st. 2" << endl;
- cout << "2. Wyznacznik st. 2 - elementy losowe" << endl;
- cout << "3. Wyznacznik st. 3 (metoda Sarrusa)" << endl;
- cout << "4. Wyznacznik st. 3 (metoda Sarrusa) - elementy losowe" << endl;
- cout << "5. Wyznacznik st. 3 (Rozwiniecie Laplace'a)" << endl;
- cout << "6. Wyznacznik st. 3 (Rozwiniecie Laplace'a) - elementy losowe" << endl;
- cout << "7. Zamknij program" << endl;
- cout << "Wybierz opcje: ";
- cin >> wybor_menu;
- if (wybor_menu == 1 || wybor_menu == 2 || wybor_menu == 3 || wybor_menu == 4 || wybor_menu == 5 || wybor_menu == 6 || wybor_menu==7)
- {
- switch (wybor_menu)
- {
- case 1:
- stworz_macierz(macierz, 2);
- wypelnij_macierz(macierz, 2);
- det_2(macierz, 2);
- zwolnij_pamiec(macierz, 2);
- break;
- case 2:
- stworz_macierz(macierz, 2);
- wypelnij_macierz_losowo(macierz, 2);
- det_2(macierz, 2);
- zwolnij_pamiec(macierz, 2);
- break;
- case 3:
- stworz_macierz(macierz, 3);
- wypelnij_macierz(macierz, 3);
- det_3(macierz, 3);
- zwolnij_pamiec(macierz, 3);
- break;
- case 4:
- stworz_macierz(macierz, 3);
- wypelnij_macierz_losowo(macierz, 3);
- det_3(macierz, 3);
- zwolnij_pamiec(macierz, 3);
- break;
- case 5:
- stworz_macierz(macierz, 3);
- wypelnij_macierz(macierz, 3);
- det_3_laplace(macierz, 3);
- zwolnij_pamiec(macierz, 3);
- break;
- case 6:
- stworz_macierz(macierz, 3);
- wypelnij_macierz_losowo(macierz, 3);
- det_3_laplace(macierz, 3);
- zwolnij_pamiec(macierz, 3);
- break;
- case 7:
- break;
- }
- }
- else
- cout << "Wprowadzono nieprawidlowa wartosc!" << endl;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement