thezxtreme

Untitled

Jun 4th, 2020
660
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <iostream>
  2.  
  3. class Matrix
  4. {
  5.     protected:
  6.         int** matrix = nullptr; int rows = 0x0, columns = 0x0;
  7.  
  8.     public:
  9.         Matrix(const int _row_size, const int _column_size) : rows(_row_size), columns(_column_size) { Matrix::resize(_row_size, _column_size); }
  10.  
  11.         virtual void set_value(int _row, int _column, int _value) = 0;
  12.         virtual int get_value(int _row, int _column) = 0;
  13.  
  14.         auto resize(const int row, const int column) -> void
  15.         {
  16.             matrix = new int*[row];
  17.             for(int i(0x0); i != row; ++i)
  18.                 matrix[i] = new int[column];
  19.  
  20.             Matrix::reset();
  21.         }
  22.  
  23.         auto reset() -> void
  24.         {
  25.             for (int i(0x0); i != rows; ++i)
  26.                 for (int j(0x0); j != columns; ++j)
  27.                     matrix[i][j] = 0x0;
  28.         }
  29.  
  30.         auto print() const -> void
  31.         {
  32.             for (int i(0x0); i != rows; ++i)
  33.             {
  34.                 std::cout << "Row: " << i << ": ";
  35.  
  36.                 for (int j(0x0); j != columns; ++j)
  37.                     std::cout << matrix[i][j] << " ";
  38.                 std::cout << std::endl;
  39.             }
  40.             std::cout << std::endl;
  41.         }
  42. };
  43.  
  44. class Sparse : public Matrix
  45. {
  46.     public:
  47.         Sparse(const int _row_size, const int _column_size) : Matrix(_row_size, _column_size) {}
  48.  
  49.         auto set_value(int _row, int _column, int _value) -> void override
  50.         {
  51.             matrix[_row][_column] = _value;
  52.         }
  53.  
  54.         auto get_value(int _row, int _column) -> int override
  55.         {
  56.             /* Find how many elements are not zero. */
  57.             uint16_t counter = 0x0;
  58.             for (int i(0x0); i != rows; ++i)
  59.                 for (int j(0x0); j != columns; ++j)
  60.                     if (matrix[i][j] != 0x0)
  61.                         ++counter;
  62.  
  63.             /* Create new matrix on heap. */
  64.             int** data = new int*[0x3];
  65.             for(int i(0x0); i != 0x3; ++i)
  66.                 data[i] = new int[counter];
  67.  
  68.             /* Copy values from base class matrix to data matrix. */
  69.             int row_insert = 0x0;
  70.             for (int i(0x0); i != rows; ++i)
  71.             {
  72.                 for (int j(0x0); j != columns; ++j)
  73.                 {
  74.                     if (matrix[i][j] != 0x0)
  75.                     {
  76.                         data[row_insert][0x0] = i;
  77.                         data[row_insert][0x1] = j;
  78.                         data[row_insert][0x2] = matrix[i][j];
  79.                         row_insert++;
  80.                     }
  81.                 }
  82.             }
  83.  
  84.             /* Now update base class members. */
  85.             matrix = data;
  86.             rows = counter;
  87.             columns = 3;
  88.  
  89.             return 0; //logic here...
  90.         }
  91. };
  92.  
  93. class Dense : public Matrix
  94. {
  95.     public:
  96.         Dense(const int _row_size, const int _column_size) : Matrix(_row_size, _column_size) {}
  97.  
  98.         auto set_value(int _row, int _column, int _value) -> void override
  99.         {
  100.             matrix[_row][_column] = _value + 1;
  101.         }
  102.  
  103.         auto get_value(int _row, int _column) -> int override
  104.         {
  105.             return matrix[_row][_column];
  106.         }
  107. };
  108.  
  109.  
  110.  
  111. int main()
  112. {
  113.     Sparse s1(3, 5);
  114.     s1.set_value(0, 0, 1337);
  115.     s1.set_value(0, 1, 225);
  116.     s1.get_value(0,0);
  117.     s1.print();
  118.  
  119.     Dense d1(2,2);
  120.     d1.set_value(0, 0, 1337);
  121.     d1.print();
  122.  
  123.     return 0;
  124. }
RAW Paste Data

Adblocker detected! Please consider disabling it...

We've detected AdBlock Plus or some other adblocking software preventing Pastebin.com from fully loading.

We don't have any obnoxious sound, or popup ads, we actively block these annoying types of ads!

Please add Pastebin.com to your ad blocker whitelist or disable your adblocking software.

×