Advertisement
DasShelmer

14_1_9

May 7th, 2020
862
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.47 KB | None | 0 0
  1. // 1
  2. #include <iostream>
  3. using namespace std;
  4.  
  5. class Int2D {
  6. public:
  7.     int n, m;// collums, rows
  8.     int **intArray;
  9.  
  10.     Int2D(int N = 1, int M = 1) {
  11.         n = N; m = M;
  12.  
  13.         intArray = new int* [n];
  14.         for (int i = 0; i < n; i++) {
  15.             intArray[i] = new int[m];
  16.             memset(intArray[i], 0, m * size_t(4));
  17.         }
  18.     }
  19.  
  20.     Int2D& init(int N = 1, int M = 1) {
  21.         n = N; m = M;
  22.  
  23.         intArray = new int* [n];
  24.         for (int i = 0; i < n; i++) {
  25.             intArray[i] = new int[m];
  26.             memset(intArray[i], 0, m * size_t(4));
  27.         }
  28.         return *this;
  29.     }
  30.  
  31.     void write() {
  32.         for (int i = 0; i < n; i++)
  33.             for (int j = 0; j < m; j++)
  34.                 cin >> intArray[i][j];
  35.     }
  36.  
  37.     void print() {
  38.         for (int i = 0; i < n; i++) {
  39.             for (int j = 0; j < m; j++)
  40.                 cout << intArray[i][j] << " ";
  41.             cout << endl;
  42.         }
  43.     }
  44.  
  45.     long summCollum(int i = 0) {
  46.         long sum = 0;
  47.         for (int j = 0; j < m; j++)
  48.             sum += intArray[j][i];
  49.         return sum;
  50.     }
  51.  
  52.     int zeroItemsCount() {
  53.         int zi = 0;
  54.         for (int i = 0; i < n; i++)
  55.             for (int j = 0; j < m; j++)
  56.                 if (intArray[i][j] == 0)
  57.                     zi++;
  58.         return zi;
  59.     }
  60.  
  61.     void setDiag(int scalar) {
  62.         for (int i = 0; i < n && i < m; i++)
  63.             intArray[i][i] = scalar;
  64.     }
  65.  
  66. private:
  67.     int min(int a, int b) {
  68.         if (a < b)
  69.             return a;
  70.         return b;
  71.     }
  72.     void addToEvery(int val) {
  73.         for (int i = 0; i < n; i++)
  74.             for (int j = 0; j < m; j++)
  75.                 intArray[i][j] += val;
  76.     }
  77.  
  78. public:
  79.     Int2D& operator ++() {
  80.         addToEvery(1);
  81.         return *this;
  82.     }
  83.     Int2D operator++ (int)
  84.     {
  85.         Int2D result(*this);
  86.         ++(*this);
  87.         return result;
  88.     }
  89.  
  90.     Int2D& operator --() {
  91.         addToEvery(-1);
  92.         return *this;
  93.     }
  94.     Int2D operator-- (int)
  95.     {
  96.         Int2D result(*this);
  97.         --(*this);
  98.         return result;
  99.     }
  100.  
  101.     Int2D operator + (Int2D const& arr) {
  102.         if (this->n != arr.n || this->m != arr.m)
  103.             throw "Разные размерности массивов!";
  104.  
  105.         Int2D res = Int2D(n, m);
  106.         for (int i = 0; i < n; i++)
  107.             for (int j = 0; j < m; j++)
  108.                 res.intArray[i][j] += intArray[i][j] + arr.intArray[i][j];
  109.  
  110.         return res;
  111.     }
  112. };
  113.  
  114. int main() {
  115.     setlocale(LC_ALL, "Russian");
  116.     auto a = Int2D(3, 3), b = Int2D(3, 3);
  117.     cout << "Заполните массив A[3x3]:\n";
  118.     a.write();
  119.     cout << "Заполните массив B[3x3]:\n";
  120.     b.write();
  121.  
  122.     cout << "Количество нулевых эл. в массиве A:\n" << a.zeroItemsCount() << endl;
  123.  
  124.     cout << "Добавляем по 2 каждому эл. массива A.\n";
  125.     a++; a++;
  126.  
  127.     cout << "Новый массив A:\n";
  128.     a.print();
  129.  
  130.     cout << "Сумма 2 столбца массива A:\n" << a.summCollum(1) << endl;
  131.     int newDiag;
  132.     cout << "Введите новый скаляр для гл.диагонали массива A: ";
  133.     cin >> newDiag;
  134.     a.setDiag(newDiag);
  135.  
  136.     cout << "Новый массив A:\n";
  137.     a.print();
  138.  
  139.     cout << "Складываем массивы A и B, результирующий:\n";
  140.     auto c = a + b;
  141.     c.print();
  142.  
  143. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement