Advertisement
dmkozyrev

temp.cpp

Jun 15th, 2017
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.39 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3.  
  4. typedef std::vector<int> Vector;
  5. typedef std::vector<Vector> Matrix;
  6.  
  7. //  Сложение векторов
  8. Vector operator + (const Vector & a, const Vector & b) {
  9.     Vector c;
  10.     for (int i = 0, s1 = (int)a.size(), s2 = (int)b.size(); i < s1 || i < s2; ++i)
  11.         c.push_back((i < s1 ? a[i]:0) + (i < s2 ? b[i]:0));
  12.     return c;
  13. }
  14.  
  15. //  Умножение матриц
  16. Matrix operator * (const Matrix & a, const Matrix & b) {
  17.        
  18.     Matrix c;
  19.     for (int i = 0; i < (int)a.size(); ++i) {
  20.         c.push_back(Vector());
  21.         for (int j = 0; j < (int)b[0].size(); ++j) {
  22.             c.back().push_back(0);
  23.             for (int k = 0; k < (int)b.size(); ++k)
  24.                 c.back().back() += a[i][j] * b[j][k];
  25.         }
  26.     }
  27.     return c;
  28. }
  29.  
  30. int main() {
  31.     setlocale(LC_ALL, "Russian");
  32.    
  33.     {   //  Сложение векторов
  34.         auto c = Vector({1, 2, 3, 4}) + Vector({4, 5, 6});
  35.        
  36.         std::cout << "Сложение векторов:\n\t";
  37.        
  38.         for (auto & it : c)
  39.             std::cout << it << "\t";
  40.            
  41.         std::cout << std::endl;
  42.     }
  43.    
  44.     {   //  Умножение матриц
  45.         auto c = Matrix({
  46.                 {1, 2, 3},
  47.                 {4, 5, 6},
  48.                 {7, 8, 9}
  49.             }) * Matrix({
  50.                 {9, 8, 7},
  51.                 {6, 5, 4},
  52.                 {3, 2, 1}
  53.             });
  54.            
  55.         std::cout << "Умножение матриц:\n";
  56.        
  57.         for (auto & row : c) {
  58.             for (auto & it : row)
  59.                 std::cout << "\t" << it;
  60.             std::cout << std::endl;
  61.         }
  62.     }
  63.      
  64.     return 0;  
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement