DimovIvan

C++Advanced-Multidimensional Arrays - Compare Matrices(with vector)

Jun 14th, 2021
238
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.76 KB | None | 0 0
  1. #include<iostream>
  2. #include<vector>
  3. #include<string>
  4. #include<sstream>
  5.  
  6. std::vector<int> readVec1D() {
  7.     std::vector<int> vec1D;
  8.     std::string line;
  9.     getline(std::cin, line);
  10.     std::istringstream istr(line);
  11.     int currNumb = 0;
  12.     while (istr >> currNumb)
  13.     {
  14.         vec1D.push_back(currNumb);
  15.     }
  16.  
  17.     return vec1D;
  18. }
  19.  
  20. std::vector<std::vector<int>> readVec2D() {
  21.     int rows = 0;
  22.     std::cin >> rows;
  23.     std::cin.ignore();
  24.     std::vector<std::vector<int>> vec2D(rows);
  25.     for (auto& row : vec2D)
  26.     {
  27.         row = readVec1D();
  28.     }
  29.  
  30.     return vec2D;
  31. }
  32.  
  33. std::vector<std::vector<std::vector<int>>> readVec3D(int size) {
  34.     std::vector<std::vector<std::vector<int>>> vec3D(size);
  35.     for (auto& vec2D : vec3D)
  36.     {
  37.         vec2D = readVec2D();
  38.     }
  39.  
  40.     return vec3D;
  41. }
  42.  
  43. bool areEqual(const std::vector<int>& first,
  44.               const std::vector<int>& second) {
  45.     const size_t firstSize = first.size();
  46.     if (firstSize != second.size())
  47.     {
  48.         return false;
  49.     }
  50.     for (size_t i = 0; i < firstSize; i++)
  51.     {
  52.         if (first[i] != second[i])
  53.         {
  54.             return false;
  55.         }
  56.     }
  57.  
  58.     return true;
  59. }
  60.  
  61. bool areEqual(const std::vector<std::vector<int>>& first,
  62.               const std::vector<std::vector<int>>& second) {
  63.     const size_t firstSize = first.size();
  64.     if (firstSize != second.size())
  65.     {
  66.         return false;
  67.     }
  68.     for (size_t i = 0; i < firstSize; i++)
  69.     {
  70.         const bool areVecsEqual = areEqual(first[i], second[i]);
  71.         if (!areVecsEqual)
  72.         {
  73.             return false;
  74.         }
  75.     }
  76.  
  77.     return true;
  78. }
  79.  
  80. void printSolution(const bool areMatrixesEqual) {
  81.     std::cout << (areMatrixesEqual ? "equal" : "not equal") << std::endl;
  82. }
  83.  
  84. int main() {
  85.     const int numVectors = 2;
  86.     const auto vec3D = readVec3D(numVectors);
  87.     const bool areMatrixesEqual = areEqual(vec3D[0], vec3D[1]);
  88.     printSolution(areMatrixesEqual);
  89.  
  90.     return 0;
  91. }
Advertisement
Add Comment
Please, Sign In to add comment