Advertisement
Guest User

Untitled

a guest
Mar 19th, 2019
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.50 KB | None | 0 0
  1. #include "pch.h"
  2. #include <iostream>
  3. #include <time.h>
  4. using namespace std;
  5.  
  6. //funkcja rezerwuje pamiec na macierz
  7. void stworz_macierz(float **& tab,int n)
  8. {
  9.     tab = new float *[n];
  10.     for (int i = 0; i < n; i++)
  11.     {
  12.         tab[i] = new float[n];
  13.     }
  14. }
  15.  
  16. //funkcja wypelnia macierz liczbami wpisanymi z klawiatury
  17. void wypelnij_macierz(float **& tab,int n)
  18. {
  19.     float tmp;
  20.     for (int i = 0; i < n; i++)
  21.     {
  22.         for (int j = 0; j < n; j++)
  23.         {
  24.             cout << "Podaj wartosc o indeksie " << i + 1 << "x" << j + 1 << ": ";
  25.             cin >> tmp;
  26.             tab[i][j] = tmp;
  27.         }
  28.     }
  29. }
  30.  
  31. //funkcja wypelnia macierz losowymi liczbami z zadnego przedzialu
  32. void wypelnij_macierz_losowo(float **& tab, int n)
  33. {
  34.     int a, b;
  35.     cout << "Losuj liczby z przedzialu od ";
  36.     cin >> a;
  37.     cout << "Losuj liczby z przedzialu od " << a << " do ";
  38.     cin >> b;
  39.     if (a < b)
  40.     {
  41.         for (int i = 0; i < n; i++)
  42.         {
  43.             for (int j = 0; j < n; j++)
  44.             {
  45.                 tab[i][j] = rand() % abs((-1 * a) + b + 1) + a;
  46.             }
  47.         }
  48.     }
  49.     else
  50.     {
  51.         for (int i = 0; i < n; i++)
  52.         {
  53.             for (int j = 0; j < n; j++)
  54.             {
  55.                 tab[i][j] = rand() % abs((-1 * a) + b + 1) + b;
  56.             }
  57.         }
  58.     }
  59. }
  60.  
  61. //funkcja zwalnia pamięć zajeta uprzednio przez macierz
  62. void zwolnij_pamiec(float **& tab, int n)
  63. {
  64.  
  65.     for (int i = 0; i < n; i++)
  66.     {
  67.         delete[] tab[i];
  68.     }
  69.     delete[] tab;
  70. }
  71.  
  72. //funkcja liczy wyznacznik z macierzy stopnia drugiego a następnie wyswietla działanie oraz wynik
  73. void det_2(float **& tab, int n)
  74. {
  75.     cout << "A =" << endl;
  76.     for (int i = 0; i < n; i++)
  77.     {
  78.         for (int j = 0; j < n; j++)
  79.         {
  80.             cout << tab[i][j] << " ";
  81.         }
  82.         cout << endl;
  83.     }
  84.     float det = tab[0][0] * tab[1][1] - (tab[0][1] * tab[1][0]);
  85.     cout << "detA = " << tab[0][0] << " * " << tab[1][1] << " - (" << tab[0][1] << " * " << tab[1][0] << ") = " << det << endl;
  86. }
  87.  
  88. //funkcja liczy wyznacznik z macierzy stopnia trzeciego metoda Sarrusa a następnie wyswietla działanie oraz wynik
  89. void det_3(float **& tab, int n)
  90. {
  91.     cout << "A =" << endl;
  92.     for (int i = 0; i < n; i++)
  93.     {
  94.         for (int j = 0; j < n; j++)
  95.         {
  96.             cout << tab[i][j] << " ";
  97.         }
  98.         cout << endl;
  99.     }
  100.     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]) -
  101.                 (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]);
  102.     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;
  103.     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;
  104. }
  105.  
  106. //funkcja liczy wyznacznik z macierzy stopnia trzeciego za pomocą rozwiniecia Laplace’a a następnie wyswietla działanie oraz wynik
  107. void det_3_laplace(float **& tab, int n)
  108. {
  109.     cout << "A =" << endl;
  110.     for (int i = 0; i < n; i++)
  111.     {
  112.         for (int j = 0; j < n; j++)
  113.         {
  114.             cout << tab[i][j] << " ";
  115.         }
  116.         cout << endl;
  117.     }
  118.     float det = (tab[0][0] * ((tab[1][1] * tab[2][2]) - (tab[1][2] * tab[2][1]))) -
  119.                 (tab[0][1] * ((tab[1][0] * tab[2][2]) - (tab[1][2] * tab[2][0]))) +
  120.                 (tab[0][2] * ((tab[1][0] * tab[2][1]) - (tab[1][1] * tab[2][0])));
  121.     cout << "detA = " << tab[0][0] << "*(" << tab[1][1] << "*" << tab[2][2] << "-" << tab[1][2] << "*" << tab[2][1]<<")-" << endl;
  122.     cout << "-" << tab[0][1] << "*(" << tab[1][0] << "*" << tab[2][2] << "-" << tab[1][2] << "*" << tab[2][0] << ")+" << endl;
  123.     cout << "+" << tab[0][2] << "*(" << tab[1][0] << "*" << tab[2][1] << "-" << tab[1][1] << "*" << tab[2][0] << ") = " << det << endl;
  124. }
  125.  
  126. //funkcja glowna zawierajaca menu oraz odwołania do poszczególnych funkcji
  127. int main()
  128. {
  129.     srand(time(NULL));
  130.     float **macierz = 0;
  131.     int wybor_menu=0;
  132.     while (wybor_menu != 7)
  133.     {
  134.         cout << "1. Wyznacznik st. 2" << endl;
  135.         cout << "2. Wyznacznik st. 2 - elementy losowe" << endl;
  136.         cout << "3. Wyznacznik st. 3 (metoda Sarrusa)" << endl;
  137.         cout << "4. Wyznacznik st. 3 (metoda Sarrusa) - elementy losowe" << endl;
  138.         cout << "5. Wyznacznik st. 3 (Rozwiniecie Laplace'a)" << endl;
  139.         cout << "6. Wyznacznik st. 3 (Rozwiniecie Laplace'a) - elementy losowe" << endl;
  140.         cout << "7. Zamknij program" << endl;
  141.         cout << "Wybierz opcje: ";
  142.         cin >> wybor_menu;
  143.    
  144.         if (wybor_menu == 1 || wybor_menu == 2 || wybor_menu == 3 || wybor_menu == 4 || wybor_menu == 5 || wybor_menu == 6 || wybor_menu==7)
  145.         {
  146.             switch (wybor_menu)
  147.             {
  148.             case 1:
  149.                 stworz_macierz(macierz, 2);
  150.                 wypelnij_macierz(macierz, 2);
  151.                 det_2(macierz, 2);
  152.                 zwolnij_pamiec(macierz, 2);
  153.                 break;
  154.             case 2:
  155.                 stworz_macierz(macierz, 2);
  156.                 wypelnij_macierz_losowo(macierz, 2);
  157.                 det_2(macierz, 2);
  158.                 zwolnij_pamiec(macierz, 2);
  159.                 break;
  160.             case 3:
  161.                 stworz_macierz(macierz, 3);
  162.                 wypelnij_macierz(macierz, 3);
  163.                 det_3(macierz, 3);
  164.                 zwolnij_pamiec(macierz, 3);
  165.                 break;
  166.             case 4:
  167.                 stworz_macierz(macierz, 3);
  168.                 wypelnij_macierz_losowo(macierz, 3);
  169.                 det_3(macierz, 3);
  170.                 zwolnij_pamiec(macierz, 3);
  171.                 break;
  172.             case 5:
  173.                 stworz_macierz(macierz, 3);
  174.                 wypelnij_macierz(macierz, 3);
  175.                 det_3_laplace(macierz, 3);
  176.                 zwolnij_pamiec(macierz, 3);
  177.                 break;
  178.             case 6:
  179.                 stworz_macierz(macierz, 3);
  180.                 wypelnij_macierz_losowo(macierz, 3);
  181.                 det_3_laplace(macierz, 3);
  182.                 zwolnij_pamiec(macierz, 3);
  183.                 break;
  184.             case 7:
  185.                 break;
  186.             }
  187.         }
  188.         else
  189.             cout << "Wprowadzono nieprawidlowa wartosc!" << endl;
  190.     }
  191. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement