daily pastebin goal
80%
SHARE
TWEET

Untitled

a guest Jan 18th, 2019 68 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <iostream>
  2. #include <cstdlib>
  3.  
  4. using namespace std;
  5.  
  6. struct macierz{
  7. int x;
  8. int y;
  9. double wartosc[10][10];
  10. }A,B,C;
  11.  
  12. char wybor;
  13.  
  14. void wczytaj()
  15. {
  16.     cout<<"Podaj ilosc macierzy. Maksymalna ilosc - 3: ";
  17.     int a;
  18.     cin>>a;
  19.     if(a==0 || a>3)
  20.     {
  21.         system("cls");
  22.         cout<<"Musisz wprowadzic co najmniej 1 macierz, maksymalnie 3!";
  23.         wczytaj();
  24.     }
  25.     if(a>0 && a<=3)
  26.     {
  27.         cout<<"Wprowadz ilosc wierszy dla macierzy A: ";
  28.         cin>>A.x;
  29.         cout<<"Wprowadz ilosc kolumn dla macierzy A: ";
  30.         cin>>A.y;
  31.         cout<<"Wymiary macierzy A: "<<A.x<<"x"<<A.y<<endl<<endl;
  32.         for(int i=0; i<A.x;i++)
  33.         {
  34.             for(int j=0;j<A.y;j++)
  35.             {
  36.                 cout<<"Podaj a"<<i<<j<<": ";
  37.                 cin>>A.wartosc[i][j];
  38.             }
  39.         }
  40.     }
  41.         cout<<endl;
  42.         if(a>1&&a<=3){
  43.         cout<<"Wprowadz ilosc wierszy dla macierzy B: ";
  44.         cin>>B.x;
  45.         cout<<"Wprowadz ilosc kolumn dla macierzy B: ";
  46.         cin>>B.y;
  47.         cout<<"Wymiary macierzy B: "<<B.x<<"x"<<B.y<<endl<<endl;
  48.         for(int i=0; i<B.x;i++)
  49.         {
  50.             for(int j=0;j<B.y;j++)
  51.             {
  52.                 cout<<"Podaj b"<<i<<j<<": ";
  53.                 cin>>B.wartosc[i][j];
  54.             }
  55.         }
  56.         }
  57.         cout<<endl;
  58.         if(a==3)
  59.         {
  60.         cout<<"Wprowadz ilosc wierszy dla macierzy C: ";
  61.         cin>>C.x;
  62.         cout<<"Wprowadz ilosc kolumn dla macierzy C: ";
  63.         cin>>C.y;
  64.         cout<<"Wymiary macierzy C: "<<C.x<<"x"<<C.y<<endl<<endl;
  65.         for(int i=0; i<C.x;i++)
  66.         {
  67.             for(int j=0;j<C.y;j++)
  68.             {
  69.                 cout<<"Podaj c"<<i<<j<<": ";
  70.                 cin>>C.wartosc[i][j];
  71.             }
  72.         }
  73.     }
  74. }
  75.  
  76. void wypisz()
  77. {
  78.     if(A.x!=0)
  79.     {
  80.         cout<<endl<<"Macierz A; "<<endl;
  81.         for(int i=0;i<A.x;i++)
  82.         {
  83.             cout << "|";
  84.             for(int j=0;j<A.y;j++)
  85.             {
  86.  
  87.                 cout.width(2);
  88.                 cout<<A.wartosc[i][j];
  89.             }
  90.             cout << " |" << endl;
  91.             cout<<endl;
  92.         }
  93.     }
  94.  
  95.  
  96.      if(B.x!=0)
  97.     {
  98.         cout<<endl<<"Macierz B; "<<endl;
  99.         for(int i=0;i<B.x;i++)
  100.         {
  101.             cout << "|";
  102.             for(int j=0;j<B.y;j++)
  103.             {
  104.                 cout.width(2);
  105.                 cout<<B.wartosc[i][j];
  106.             }
  107.             cout << " |" << endl;
  108.             cout<<endl;
  109.         }
  110.     }
  111.      if(C.x!=0)
  112.     {
  113.         cout<<endl<<"Macierz C; "<<endl;
  114.         for(int i=0;i<C.x;i++)
  115.         {
  116.             cout << "|";
  117.             for(int j=0;j<C.y;j++)
  118.             {
  119.                 cout.width(2);
  120.                 cout<<C.wartosc[i][j];
  121.             }
  122.             cout << " |" << endl;
  123.             cout<<endl;
  124.         }
  125.     }
  126.  
  127. }
  128. float dodawanie_macierzy[100][100];
  129.  
  130. void dodawanie()
  131. {
  132.     float dodawanie_macierzy[A.x][A.y];
  133. if(A.x==B.x&&A.y==B.y)
  134. {
  135.     cout<<"Suma macierzy:"<<endl;
  136.  
  137.     for(int i=0;i<A.x;i++)
  138.         {
  139.             cout << "|";
  140.             for(int j=0;j<A.y;j++){
  141.                 dodawanie_macierzy[i][j]=A.wartosc[i][j]+B.wartosc[i][j];
  142.                 cout.width(2);
  143.                 cout<<dodawanie_macierzy[i][j];
  144.             }
  145.             cout<< " |"<<endl;
  146.             cout<<endl;
  147. }
  148. }
  149.             else
  150.             {
  151.                 cout<<"Podane macierze musza miec taki sam rozmiar";
  152.             }
  153.  
  154.  
  155. }
  156.  
  157. void mnozenie()
  158. {
  159.     float mnozenie_macierzy[A.y][B.x];
  160.     if(A.x==B.y)
  161.     {
  162.         cout<<"Iloczyn macierzy: "<<endl;
  163.         for(int i=0;i<A.x;i++)
  164.             {
  165.                 cout << "|";
  166.             for(int j=0;j<B.y;j++)
  167.             {
  168.                 for(int t=0;t<=B.x;t++)
  169.                 mnozenie_macierzy[i][j]+= A.wartosc[i][t]*B.wartosc[t][j];
  170.                 cout.width(4);
  171.                 cout<<mnozenie_macierzy[i][j];
  172.             }
  173.         cout<< " |"<<endl;
  174.         cout<<endl;
  175.     }
  176.     }
  177.     else
  178.     {
  179.         cout<<"Liczba kolumn MACIERZY A musi byc rowna liczbie wierszy MACIERZY B";
  180.     }
  181. }
  182.  
  183.  
  184.  
  185. double wyznacznik(macierz m)
  186. {
  187.     if(m.y==1)
  188.         return m.wartosc[0][0];
  189.     else if(m.y==2)
  190.         return m.wartosc[0][0]*m.wartosc[1][1]-m.wartosc[0][1]*m.wartosc[1][0];
  191.     else if(m.y==3)
  192.   return m.wartosc[0][0]*m.wartosc[1][1]*m.wartosc[2][2]+m.wartosc[0][1]*m.wartosc[1][2]*m.wartosc[2][0]+m.wartosc[0][2]*m.wartosc[1][0]*m.wartosc[2][1]-m.wartosc[2][0]*m.wartosc[1][1]*m.wartosc[0][2]-m.wartosc[2][1]*m.wartosc[1][2]*m.wartosc[0][0]-m.wartosc[0][1]*m.wartosc[1][0]*m.wartosc[2][2];
  193. }
  194.  
  195. void wyznacznik_menu2()
  196. {
  197.     int w;
  198.  
  199.     cout<<"1.Macierz A"<<endl;
  200.     cout<<"2.Macierz B"<<endl;
  201.     cout<<"3.Macierz C"<<endl;
  202.     cin>>w;
  203.  
  204.     switch(w)
  205.     {
  206.         case 1:
  207.         cout<<"Wyznacznik macierzy A ="<<wyznacznik(A);
  208.         break;
  209.  
  210.         case 2:
  211.         cout<<"Wyznacznik macierzy B ="<<wyznacznik(B);
  212.         break;
  213.  
  214.         case 3:
  215.         cout<<"Wyznacznik macierzy C ="<<wyznacznik(C);
  216.         break;
  217.     }
  218. }
  219.  
  220.  
  221. void odwrotnosc_macierzy(double macierze[10][10], double macierz_odwrocona[3][3],double wyznacznik){
  222.     for(int i=0;i<3;i++){
  223.         for(int j=0;j<3;j++){
  224.             macierz_odwrocona[i][j]=((macierze[(j+1)%3][(i+1)%3] * macierze[(j+2)%3][(i+2)%3]) - (macierze[(j+1)%3][(i+2)%3] * macierze[(j+2)%3][(i+1)%3]))/wyznacznik;
  225.         }
  226.     }
  227. }
  228.  
  229. double odwrotna[3][3];
  230.  
  231.  
  232. int main()
  233. {
  234.     for(;;)
  235.     {
  236.     cout<<endl;
  237.     cout<<"MENU"<<endl;
  238.     cout<<"1.WCZYTYWANIE MACIERZY"<<endl;
  239.     cout<<"2.WYPISYWANIE MACIERZY"<<endl;
  240.     cout<<"3.DODAWANIE MACIERZY"<<endl;
  241.     cout<<"4.MNOZENIE MACIERZY"<<endl;
  242.     cout<<"5.LICZENIE WYZNACZNIKA MACIERZY(3x3)"<<endl;
  243.     cout<<"6.WYZNACZANIE MACIERZY ODWROTNEJ"<<endl;
  244.     cout<<"7.ROZWIAZYWANIE ROWNANIA - AX+B=C"<<endl;
  245.     cout<<"8.ZAKONCZ PROGRAM"<<endl;
  246.  
  247.     cout<<"Wybierz nr opcji: ";
  248.     cin>>wybor;
  249.     switch(wybor)
  250.     {
  251.     case '1':
  252.         system("cls");
  253.         wczytaj();
  254.     break;
  255.     case '2':
  256.         system("cls");
  257.         wypisz();
  258.         break;
  259.     case '3':
  260.         system("cls");
  261.         dodawanie();
  262.         break;
  263.     case '4':
  264.         system("cls");
  265.         mnozenie();
  266.         break;
  267.     case '5':
  268.         system("cls");
  269.         wyznacznik_menu2();
  270.         break;
  271.     case '6':
  272.         system("cls");
  273.         odwrotnosc_macierzy(A.wartosc, odwrotna, wyznacznik(A));
  274.         for(int i=0;i<3;i++)
  275.         {
  276.             for(int y=0;y<3;y++)
  277.             {
  278.                 cout<<odwrotna[i][y]<<" ";
  279.             }
  280.             cout<<endl;
  281.         }
  282.         break;
  283.     case '7':
  284.         system("cls");
  285.  
  286.         break;
  287.     case '8':
  288.         system("cls");
  289.         exit(0);
  290.         break;
  291.  
  292.     }
  293.     }
  294.  
  295. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top