Advertisement
naskedvi

S3 - zad.3

Mar 17th, 2014
246
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.47 KB | None | 0 0
  1. #include <iostream>
  2. #include <iomanip>
  3. #include <vector>
  4.  
  5. typedef std::vector<std::vector<double>> Matrica;
  6.  
  7. Matrica KreirajMatricu(int br_redova, int br_kolona)
  8. {
  9. return Matrica(br_redova, std::vector<double>(br_kolona));
  10. }
  11.  
  12. int BrojRedova(Matrica m)
  13. {
  14. return m.size();
  15. }
  16.  
  17. int BrojKolona(Matrica m)
  18. {
  19. return m[0].size();
  20. }
  21.  
  22. Matrica UnesiMatricu(int br_redova, int br_kolona)
  23. {
  24. auto m(KreirajMatricu(br_redova, br_kolona));
  25. for(int i = 0; i < br_redova; i++)
  26. for(int j = 0; j < br_kolona; j++) {
  27. std::cout << "Element (" << i + 1 << "," << j + 1 << "): ";
  28. std::cin >> m[i][j];
  29. }
  30. return m;
  31. }
  32.  
  33. void IspisiMatricu(Matrica m)
  34. {
  35. for(int i = 0; i < BrojRedova(m); i++)
  36. {
  37. for(int j = 0; j < BrojKolona(m); j++)
  38. std::cout << std::setw(10) << m[i][j];
  39. std::cout << std::endl;
  40. }
  41. }
  42.  
  43. Matrica SaberiMatrice(Matrica m1, Matrica m2)
  44. {
  45. if((BrojRedova(m1)!=BrojRedova(m2))
  46. && (BrojKolona(m1)!=BrojKolona(m2))) throw "Ne mogu se sabirati!";
  47.  
  48. auto m3(KreirajMatricu(BrojRedova(m1), BrojKolona(m1)));
  49. for(int i = 0; i < BrojRedova(m1); i++)
  50. for(int j = 0; j < BrojKolona(m1); j++)
  51. m3[i][j] = m1[i][j] + m2[i][j];
  52. return m3;
  53. }
  54.  
  55. Matrica PomnoziMatrice(Matrica m1, Matrica m2)
  56. {
  57. if(BrojKolona(m1)!=BrojRedova(m2)) throw "Ne mogu se pomnoziti!";
  58. auto m3(KreirajMatricu(BrojRedova(m1), BrojKolona(m2)));
  59.  
  60. for(int i = 0; i < BrojRedova(m1); i++)
  61. for(int j = 0; j < BrojKolona(m2); j++)
  62. {
  63. double suma(0);
  64. for(int k = 0; k < BrojRedova(m2); k++)
  65. suma += m1[i][k] * m2[k][j];
  66. m3[i][j] = suma;
  67. }
  68. return m3;
  69. }
  70.  
  71.  
  72. int main() {
  73. int m1, n1;
  74. std::cout << "Unesi dimenzije matrice A: ";
  75. std::cin >> m1 >> n1;
  76. std::cout << "Unesi elemente matrice A:\n";
  77. auto A(UnesiMatricu(m1, n1));
  78. int m2, n2;
  79. std::cout << "Unesi dimenzije matrice B: ";
  80. std::cin >> m2 >> n2;
  81. std::cout << "Unesi elemente matrice B:\n";
  82. auto B(UnesiMatricu(m2, n2));
  83. std::cout << "Matrica A:\n";
  84. IspisiMatricu(A);
  85. std::cout << "Matrica B:\n";
  86. IspisiMatricu(B);
  87.  
  88. try{
  89. std::cout << "Matrica A+B:\n";
  90. IspisiMatricu(SaberiMatrice(A, B));
  91. }
  92. catch(const char poruka[])
  93. {
  94. std:: cout<< poruka<< std:: endl;
  95. }
  96.  
  97. try{
  98. std::cout << "Matrica A*B:\n";
  99. IspisiMatricu(PomnoziMatrice(A, B));
  100. }
  101. catch(const char poruka[])
  102. {
  103. std:: cout<< poruka<< std:: endl;
  104. }
  105.  
  106. return 0;
  107. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement