Advertisement
hiker43

lllong

Aug 21st, 2018
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 8.14 KB | None | 0 0
  1. #include <iostream>
  2. using std::cin;
  3. using std::cout;
  4.  
  5. const int maxSize=10;
  6.  
  7. void vnesiMatrica (double matrica[][maxSize], int r, int c)
  8. {
  9.     for (int i=0; i < r; i++)
  10.     {
  11.         for (int j=0; j < c; j++)
  12.         {
  13.             cout<<"matrica["<<i<<"]["<<j<<"]=";
  14.             cin>>matrica[i][j];
  15.         }
  16.     }
  17. }
  18.  
  19. void pecatiMatrica (double matrica[][maxSize], int r, int c)
  20. {
  21.     for (int i=0; i < r; i++)
  22.     {
  23.         for (int j=0; j < c; j++)
  24.         {
  25.             cout<<matrica[i][j]<<"\t";
  26.         }
  27.         cout<<"\n";
  28.     }
  29. }
  30.  
  31. void zbirMatrici (double sobirok1[][maxSize], double sobirok2[][maxSize], double zbirMatrici[][maxSize], int r, int c)
  32.  {
  33.     for(int i = 0; i < r; i++)
  34.     {
  35.         for(int j = 0; j < c; j++)
  36.         {
  37.             zbirMatrici[i][j] = sobirok1[i][j] + sobirok2[i][j];
  38.         }
  39.     }
  40.  }
  41.  
  42.  void razlikaMatrici (double namalenik[][maxSize], double namalitel[][maxSize], double razlika[][maxSize], int r, int c)
  43.  {
  44.     for(int i = 0; i < r; i++)
  45.     {
  46.         for(int j = 0; j < c; j++)
  47.         {
  48.             razlika[i][j] = namalenik[i][j] - namalitel[i][j];
  49.         }
  50.     }
  51.  }
  52.  
  53. double zbirGlavnaDijagonala(double matrica[][maxSize], int N)
  54. {
  55.     double zbir=0;
  56.     for (int i=0; i < N; i++)
  57.     {
  58.         for (int j=0; j <N; j++)
  59.         {
  60.             if (i==j) zbir+=matrica[i][j];
  61.         }
  62.     }
  63.     return zbir;
  64. }
  65.  
  66. double zbirSporednaDijagonala (double matrica[][maxSize], int N)
  67. {
  68.     double zbir=0;
  69.     for (int i=0; i < N; i++)
  70.     {
  71.         for (int j=0; j < N; j++)
  72.         {
  73.             if ( i + j == N - 1) zbir+=matrica[i][j];
  74.         }
  75.     }
  76.     return zbir;
  77. }
  78.  
  79. void mnozenjeSkalar (double matrica[][maxSize], double matRezultat[][maxSize], double K, int r, int c)
  80.  
  81. {
  82.     for (int i=0;i < r; i++)
  83.     {
  84.         for ( int j=0; j < c; j++)
  85.         {
  86.             matRezultat[i][j]=K*matrica[i][j];
  87.         }
  88.     }
  89. }
  90.  
  91. void mnoziMatrici(double m1[][maxSize], double m2[][maxSize], double rez[][maxSize], int r1, int rc, int c2)
  92. {
  93.     for(int i = 0; i < r1; i++)
  94.        for(int j = 0; j < c2; j++)
  95.           rez[i][j] = 0;
  96.     for(int i = 0; i < r1; i++)
  97.        for(int j = 0; j < c2; j++)
  98.           for(int k = 0; k < rc; k++)
  99.               rez[i][j] += m1[i][k]*m2[k][j];
  100. }
  101.  
  102. int meni()
  103. {
  104.     cout << "Odberi:\n";
  105.     cout << "1. Zbiranje matrici\n";
  106.     cout << "2. Odzemanje matrici\n";
  107.     cout << "3. Mnozenje matrici\n";
  108.     cout << "4. Mnozenje matrica so skalar\n";
  109.     cout << "5. Zbir po glavna dijagonala\n";
  110.     cout << "6. Zbir po sporedna dijagonala\n";
  111.     cout<< "7. Izlez.\n";
  112.     int izbor;
  113.     cout << "Vasiot izbor: ";
  114.     cin >> izbor;
  115.     return izbor;
  116. }
  117.  
  118.  
  119.  
  120. int main()
  121.  
  122. {
  123.      int r1, r2, c1, c2, k;
  124.      double m1[maxSize][maxSize];
  125.      double m2[maxSize][maxSize];
  126.      double r[maxSize][maxSize];
  127.      double zbir;
  128.  
  129.  
  130.     cout << "\t\t\tKalkulator so matrici\n\n";
  131.     int izbor = meni();
  132.     while(izbor != 7)
  133.     {
  134.         switch(izbor)
  135.         {
  136.             case 1:
  137.                 cout<<"Vnesi go brojot na redici na prvata matrica: ";
  138.                 cin>>r1;
  139.                 cout<<"Vnesi go brojot na koloni na prvata matrica: ";
  140.                 cin>>c1;
  141.                 cout << "Vnesi ja prvata matrica:\n";
  142.                 vnesiMatrica(m1, r1, c1);
  143.                 cout<<"Vnesi go brojot na redici na vtorata matrica: ";
  144.                 cin>>r2;
  145.                 cout<<"Vnesi go brojot na koloni na vtorata matrica: ";
  146.                 cin>>c2;
  147.                 cout << "Vnesi ja vtorata matrica:\n";
  148.                 vnesiMatrica(m2, r2, c2);
  149.  
  150.                 if(r1 == r2 && c1 == c2)
  151.                 {
  152.                     zbirMatrici(m1, m2, r, r1, c1);
  153.                     cout << "Zbirot na matricite e matricata:\n";
  154.                     pecatiMatrica(r, r1, c1);
  155.                 }
  156.                 else
  157.                 {
  158.                     cout << "Ne moze da se zbiraat matrici so razlicni dimenzii\n";
  159.                 }
  160.             break;
  161.  
  162.             case 2:
  163.                 cout<<"Vnesi go brojot na redici na prvata matrica: ";
  164.                 cin>>r1;
  165.                 cout<<"Vnesi go brojot na koloni na prvata matrica: ";
  166.                 cin>>c1;
  167.                 cout << "Vnesi ja prvata matrica:\n";
  168.                 vnesiMatrica(m1, r1, c1);
  169.                 cout<<"Vnesi go brojot na redici na vtorata matrica: ";
  170.                 cin>>r2;
  171.                 cout<<"Vnesi go brojot na koloni na vtorata matrica: ";
  172.                 cin>>c2;
  173.                 cout << "Vnesi ja vtorata matrica:\n";
  174.                 vnesiMatrica(m2, r2, c2);
  175.  
  176.                 if(r1 == r2 && c1 == c2)
  177.                 {
  178.                     razlikaMatrici(m1, m2, r, r1, c1);
  179.                     cout << "Razlikata na matricite e matricata:\n";
  180.                     pecatiMatrica(r, r1, c1);
  181.                 }
  182.                 else
  183.                 {
  184.                     cout << "Ne moze da se odzemaat matrici so razlicni dimenzii\n";
  185.                 }
  186.             break;
  187.  
  188.             case 3:
  189.  
  190.                 cout<<"Vnesi go brojot na redici na prvata matrica: ";
  191.                 cin>>r1;
  192.                 cout<<"Vnesi go brojot na koloni na prvata matrica: ";
  193.                 cin>>c1;
  194.                 cout << "Vnesi ja prvata matrica:\n";
  195.                 vnesiMatrica(m1, r1, c1);
  196.                 cout<<"Vnesi go brojot na redici na vtorata matrica: ";
  197.                 cin>>r2;
  198.                 cout<<"Vnesi go brojot na koloni na vtorata matrica: ";
  199.                 cin>>c2;
  200.                 cout << "Vnesi ja vtorata matrica:\n";
  201.                 vnesiMatrica(m2, r2, c2);
  202.  
  203.                 if(c1 == r2)
  204.                 {
  205.                     mnoziMatrici(m1, m2, r, r1, c1, c2); //isto so mnoziMatrici(m1, m2, r, r1, r2, c2);
  206.                     cout << "Proizvodot na matricite e matricata:\n";
  207.                     pecatiMatrica(r, r1, c1);
  208.                 }
  209.                 else
  210.                 {
  211.                     cout << "Ne moze da se mnozat dadenite matrici\n";
  212.                 }
  213.             break;
  214.  
  215.             case 4:
  216.  
  217.                 cout<<"Vnesi go brojot na redici na matricata: ";
  218.                 cin>>r1;
  219.                 cout<<"Vnesi go brojot na koloni na matricata: ";
  220.                 cin>>c1;
  221.                 cout << "Vnesi ja matricata:\n";
  222.                 vnesiMatrica(m1, r1, c1);
  223.                 cout<<"Vnesi go brojot so koj sakas da e mnozis matricata: ";
  224.                 cin>>k;
  225.                 mnozenjeSkalar(m1, r, k, r1, c1);
  226.                 cout << "Matricata rezultat e:\n";
  227.                 pecatiMatrica(r, r1, c1);
  228.  
  229.             break;
  230.  
  231.             case 5:
  232.  
  233.                 cout<<"Vnesi go brojot na redici na matricata: ";
  234.                 cin>>r1;
  235.                 cout<<"Vnesi go brojot na koloni na matricata: ";
  236.                 cin>>c1;
  237.                 if(r1 == c1)
  238.                 {
  239.                     cout << "Vnesi ja matricata:\n";
  240.                     vnesiMatrica(m1, r1, c1);
  241.                     zbir = zbirGlavnaDijagonala(m1, r1);
  242.                     cout << "Zbirot na elementite po glavnata dijagonala e: " << zbir << "\n";
  243.                 }
  244.                 else
  245.                 {
  246.                     cout << "Matricata ne e kvadratna.\n";
  247.                 }
  248.                
  249.             break;
  250.            
  251.             case 6:
  252.                 cout<<"Vnesi go brojot na redici na matricata: ";
  253.                 cin>>r1;
  254.                 cout<<"Vnesi go brojot na koloni na matricata: ";
  255.                 cin>>c1;
  256.                 if(r1 == c1)
  257.                 {
  258.                     cout << "Vnesi ja matricata:\n";
  259.                     vnesiMatrica(m1, r1, c1);
  260.                     zbir = zbirSporednaDijagonala(m1, r1);
  261.                     cout << "Zbirot na elementite po sporednata dijagonala e: " << zbir << "\n";
  262.                 }
  263.                 else
  264.                 {
  265.                     cout << "Matricata ne e kvadratna.\n";
  266.                 }
  267.  
  268.             break;
  269.  
  270.  
  271.             default:
  272.                 cout << "Ne mozes da izberes " << izbor <<"\n";
  273.         }
  274.         izbor = meni();
  275.     }
  276.     cout << "Doviduvanje...\n";
  277.  
  278. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement