Advertisement
amermo

Rad s matricama(sabiranje, mnozenje, unos, ispis...)

Mar 13th, 2015
241
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.71 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <iomanip>
  4. #include <stdexcept>
  5.  
  6. int BrojKolona(std::vector<std::vector<int>> Mat)
  7. {
  8.     return Mat[0].size();
  9. }
  10.  
  11. int BrojRedova(std::vector<std::vector<int>> Mat)
  12. {
  13.     return Mat.size();
  14. }
  15.  
  16. void IspisiMatricu(std::vector<std::vector<int>> Mat)
  17. {
  18.     for(int i(0); i < BrojRedova(Mat); i++)
  19.     {
  20.         for(int j(0); j < BrojKolona(Mat); j++)
  21.             std::cout << std::setw(5) << Mat[i][j];
  22.         std::cout << std::endl;
  23.     }
  24. }
  25.  
  26. std::vector<std::vector<int>> KreirajMatricu(int br_redova, int br_kolona)
  27. {
  28.     return std::vector<std::vector<int>>(br_redova, std::vector<int>(br_kolona));
  29. }
  30.  
  31. std::vector<std::vector<int>> UnesiMatricu(int br_redova, int br_kolona)
  32. {
  33.     std::vector<std::vector<int>> mat(KreirajMatricu(br_redova, br_kolona));
  34.     for(int i(0); i < br_redova; i++)
  35.         for(int j(0); j < br_kolona; j++)
  36.         {
  37.             std::cout << "Unesite element (" << i+1 << "," << j+1 << "): ";
  38.             std::cin >> mat[i][j];
  39.         }
  40.     return mat;
  41. }
  42.  
  43. std::vector<std::vector<int>> SaberiMatrice(std::vector<std::vector<int>> Mat1, std::vector<std::vector<int>> Mat2)
  44. {
  45.     std::vector<std::vector<int>> Mat3(KreirajMatricu(BrojRedova(Mat1), BrojKolona(Mat1)));
  46.     for(int i(0); i < BrojRedova(Mat3); i++)
  47.         for(int j(0); j < BrojKolona(Mat3); j++)
  48.             Mat3[i][j] = Mat1[i][j]+Mat2[i][j];
  49.     return Mat3;
  50. }
  51.  
  52. std::vector<std::vector<int>> PomnoziMatrice(std::vector<std::vector<int>> Mat1, std::vector<std::vector<int>> Mat2)
  53. {
  54.     std::vector<std::vector<int>> Mat3(KreirajMatricu(BrojRedova(Mat1), BrojKolona(Mat2)));
  55.     for(int i(0); i < BrojRedova(Mat3); i++)
  56.         for(int j(0); j < BrojKolona(Mat3); j++)
  57.         {
  58.             int suma(0);
  59.             for(int k(0); k < BrojRedova(Mat3); k++)
  60.                 suma+=Mat1[i][k]*Mat2[k][j];
  61.             Mat3[i][j] = suma;
  62.         }
  63.     return Mat3;
  64. }
  65.  
  66. bool MoguLiSeSabirati(std::vector<std::vector<int>> Mat1, std::vector<std::vector<int>> Mat2)
  67. {
  68.     return (BrojRedova(Mat1) == BrojRedova(Mat2) && BrojKolona(Mat1) == BrojKolona(Mat2));
  69. }
  70.  
  71. bool MoguLiSeMnoziti(std::vector<std::vector<int>> Mat1, std::vector<std::vector<int>> Mat2)
  72. {
  73.     return (BrojKolona(Mat1) == BrojRedova(Mat2));
  74. }
  75.  
  76. int main()
  77. {
  78.     int br_redova1(2), br_kolona1(2), br_redova2(2), br_kolona2(2);
  79.     std::vector<std::vector<int>> Mat1(KreirajMatricu(br_redova1, br_kolona1));
  80.     std::vector<std::vector<int>> Mat2(KreirajMatricu(br_redova2, br_kolona2));
  81.     Mat1 = UnesiMatricu(br_redova1, br_kolona1);
  82.     Mat2 = UnesiMatricu(br_redova2, br_kolona2);
  83.     std::cout << std::boolalpha << MoguLiSeSabirati(Mat1, Mat2) << MoguLiSeMnoziti(Mat1, Mat2);
  84.     return 0;
  85. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement