Advertisement
kirill_76rus

MatrixMult

Mar 16th, 2022
1,217
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.38 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <string>
  4. #include <cmath>
  5. using namespace std;
  6.  
  7. bool EnterVector(vector<int>&);//This function read ouΠΊ vector from input stream
  8. void PrintVector(const vector<int>& ourVector); //This function print our vector
  9. void PrintMatrix(const vector<vector<int>>& lhs); //This function print matrix
  10.  
  11.  
  12. vector<int> FirstVector(3);
  13. vector<int> SecondVector(3);
  14. int mul_num = 0;
  15.  
  16. //User function for operation
  17.  
  18. vector<int> Sum(const vector<int>& lhs, const vector<int>& rhs);
  19. vector<int> MulNum(const vector<int>& lhs, const int& rhs);
  20. vector<int> MulScalar(const vector<int>& lhs, const vector<int>& rhs);
  21. vector<int> MulVector(const vector<int>& lhs, const vector<int>& rhs);
  22. vector<int> Abs(const vector<int>& lhs);
  23. bool isEqual(const vector<int>& lhs, const vector<int>& rhs);
  24.  
  25.  
  26.  
  27.  
  28.  
  29. int main() {
  30.     for (;;) {
  31.         size_t operation = ' ';
  32.  
  33.         cout << "Enter the operation\n";
  34.         //TODO: add help
  35.  
  36.         cin >> operation;
  37.  
  38.         switch (operation) {
  39.         case 0:
  40.             EnterVector(FirstVector);
  41.             EnterVector(SecondVector);
  42.             PrintVector(Sum(FirstVector, SecondVector));
  43.  
  44.             break;
  45.         case 1:
  46.             EnterVector(FirstVector);
  47.             cin >> mul_num;
  48.             PrintVector(MulNum(FirstVector, mul_num));
  49.             break;
  50.  
  51.         case 2:
  52.             EnterVector(FirstVector);
  53.             EnterVector(SecondVector);
  54.             PrintVector(MulScalar(FirstVector, SecondVector));
  55.             break;
  56.  
  57.         case 3:
  58.             EnterVector(FirstVector);
  59.             EnterVector(SecondVector);
  60.             PrintVector(MulVector(FirstVector, SecondVector));
  61.             break;
  62.  
  63.         case 4:
  64.             EnterVector(FirstVector);
  65.             PrintVector(Abs(FirstVector));
  66.             break;
  67.  
  68.         case 5:
  69.             EnterVector(FirstVector);
  70.             EnterVector(SecondVector);
  71.             if (isEqual) {
  72.                 cout << "Is equal\n";
  73.             }
  74.             else {
  75.                 cout << "Isn't equal\n";
  76.             }
  77.             break;
  78.  
  79.         default:
  80.             cout << "Undefined operation\n";
  81.             break;
  82.         }
  83.     }
  84.     return 0;
  85. }
  86.  
  87.  
  88.  
  89. bool EnterVector(vector<int>& ourVector){
  90.     cout << "Enter vector\n";
  91.     for (auto& s : ourVector) {
  92.         cin >> s;
  93.     }
  94.     return true;
  95. }
  96.  
  97. void PrintVector(const vector<int>& ourVector){
  98.     for (const auto& s : ourVector) {
  99.         cout << s << ' ';
  100.     }
  101. }
  102.  
  103. void PrintMatrix(const vector<vector<int>>& lhs) {
  104.     for (const auto& i : lhs) {
  105.         for (const auto& j : i) {
  106.             cout << j << ' ';
  107.         }
  108.         cout << '\n';
  109.     }
  110. }
  111.  
  112. vector<int> Sum(const vector<int>& lhs, const vector<int>& rhs) {
  113.     vector<int> result = { lhs.at(0) + rhs.at(0), lhs.at(1) + rhs.at(1), lhs.at(2) + rhs.at(2) };
  114.     return (vector<int>) result;
  115. }
  116.  
  117. vector<int> MulNum(const vector<int>& lhs, const int& rhs) {
  118.     vector<int> result= { lhs.at(0) * rhs, lhs.at(1) * rhs, lhs.at(2) * rhs };
  119.     return result;
  120. }
  121.  
  122. vector<int> MulScalar(const vector<int>& lhs, const vector<int>& rhs) {
  123.     vector<int> result = { lhs.at(0) * rhs.at(0), lhs.at(1) * rhs.at(1), lhs.at(2) * rhs.at(2) };
  124.     return result;
  125. }
  126.  
  127.  
  128. vector<int> MulVector(const vector<int>& lhs, const vector<int>& rhs) {
  129.     vector<int> result = { (lhs.at(0) * rhs.at(2) - lhs.at(1)*rhs.at(0), (lhs.at(0) * rhs.at(2) - rhs.at(0) * lhs.at(2)), (lhs.at(0)*rhs.at(1) - rhs.at(0) * lhs.at(1)))};
  130.     return result;
  131. }
  132.  
  133. vector<int> Abs(const vector<int>& lhs) {
  134.     vector<int> result = { abs(lhs.at(0)), abs(lhs.at(1)), abs(lhs.at(2)) };
  135.     return result;
  136. }
  137.  
  138. bool isEqual(const vector<int>& lhs, const vector<int>& rhs) {
  139.     bool result = true;
  140.     for (int i = 0; i < 3; ++i) {
  141.         result &= lhs.at(i) == rhs.at(i);
  142.     }
  143.     return result;
  144. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement