HRusev

05. Compare Matrices

May 29th, 2023
128
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.30 KB | Source Code | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <sstream>
  4.  
  5. using namespace std;
  6.  
  7.  int getMatrix2D(int** matrix, int rows)
  8. {
  9.     //Allocate memory and initilize
  10.    
  11.      string input;
  12.      stringstream lineIn;
  13.      int elm;
  14.      getline(cin, input);
  15.      lineIn << input;
  16.      int col = 0;
  17.      //Get number on colons
  18.      while (lineIn >> elm)
  19.      {        
  20.          col++;
  21.      }
  22.      
  23.      //Clear and load buffer
  24.      lineIn.str("");
  25.      lineIn.clear();
  26.      lineIn << input;
  27.      matrix[0] = new int[col];
  28.      for (int j = 0; j < col; j++)
  29.      {
  30.          lineIn >> elm;
  31.          matrix[0][j] = elm;
  32.      }
  33.  
  34.      //Clear buffer
  35.      lineIn.str("");
  36.      lineIn.clear();
  37.     for (int i = 1; i < rows; i++)
  38.     {
  39.        
  40.         getline(cin, input);
  41.         lineIn << input;
  42.         matrix[i] = new int[col];
  43.         for (int j = 0; j < col; j++)
  44.         {
  45.             lineIn >> elm;
  46.             matrix[i][j] = elm;
  47.         }
  48.        
  49.         //Clear buffer
  50.         lineIn.str("");
  51.         lineIn.clear();
  52.     }
  53.  
  54.     return col;
  55. }
  56.  
  57.  bool compareMatrix(int** matrix1, int** matrix2, int rows, int cols)
  58.  {
  59.      for (int i = 0; i < rows; i++)
  60.          for (int j = 0; j < cols; j++)
  61.              if (matrix1[i][j] != matrix2[i][j])
  62.                  return false;
  63.  
  64.      return true;
  65.  }
  66.  
  67.  void deleteMatrix(int** matrix, int rows)
  68.  {
  69.      for (int i = 0; i < rows; i++)
  70.          delete[] matrix[i];
  71.      delete[] matrix;
  72.  }
  73.  
  74. int main()
  75. {
  76.     //initilized with 0
  77. //    int matrix1[10][10] = {};
  78. //    int matrix2[10][10] = {};
  79.  
  80.     int row1, row2, col1, col2;
  81.     cin >> row1; cin.ignore();
  82.     int** matrix1 = new int* [row1];
  83.     col1 = getMatrix2D(matrix1, row1);
  84.    
  85.     cin >> row2; cin.ignore();
  86.     if (row1 != row2)
  87.     {
  88.         cout << "not equal";
  89.         deleteMatrix(matrix1, row1);
  90.         return 0;
  91.     }
  92.     int** matrix2 = new int* [row2];
  93.     col2 = getMatrix2D(matrix2, row2);
  94.  
  95.     if (col1 != col2)
  96.     {
  97.         cout << "not equal";
  98.         deleteMatrix(matrix1, row1);
  99.         deleteMatrix(matrix2, row2);
  100.  
  101.         return 0;
  102.     }
  103.  
  104.     if (compareMatrix(matrix1, matrix2, row1, col1))
  105.         cout << "equal";
  106.     else
  107.         cout << "not equal";
  108.  
  109.     deleteMatrix(matrix1, row1);
  110.     deleteMatrix(matrix2, row2);
  111. }
Advertisement
Add Comment
Please, Sign In to add comment