Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // 1
- #include <iostream>
- using namespace std;
- class Int2D {
- public:
- int n, m;// collums, rows
- int **intArray;
- Int2D(int N = 1, int M = 1) {
- n = N; m = M;
- intArray = new int* [n];
- for (int i = 0; i < n; i++) {
- intArray[i] = new int[m];
- memset(intArray[i], 0, m * size_t(4));
- }
- }
- Int2D& init(int N = 1, int M = 1) {
- n = N; m = M;
- intArray = new int* [n];
- for (int i = 0; i < n; i++) {
- intArray[i] = new int[m];
- memset(intArray[i], 0, m * size_t(4));
- }
- return *this;
- }
- void write() {
- for (int i = 0; i < n; i++)
- for (int j = 0; j < m; j++)
- cin >> intArray[i][j];
- }
- void print() {
- for (int i = 0; i < n; i++) {
- for (int j = 0; j < m; j++)
- cout << intArray[i][j] << " ";
- cout << endl;
- }
- }
- long summCollum(int i = 0) {
- long sum = 0;
- for (int j = 0; j < m; j++)
- sum += intArray[j][i];
- return sum;
- }
- int zeroItemsCount() {
- int zi = 0;
- for (int i = 0; i < n; i++)
- for (int j = 0; j < m; j++)
- if (intArray[i][j] == 0)
- zi++;
- return zi;
- }
- void setDiag(int scalar) {
- for (int i = 0; i < n && i < m; i++)
- intArray[i][i] = scalar;
- }
- private:
- int min(int a, int b) {
- if (a < b)
- return a;
- return b;
- }
- void addToEvery(int val) {
- for (int i = 0; i < n; i++)
- for (int j = 0; j < m; j++)
- intArray[i][j] += val;
- }
- public:
- Int2D& operator ++() {
- addToEvery(1);
- return *this;
- }
- Int2D operator++ (int)
- {
- Int2D result(*this);
- ++(*this);
- return result;
- }
- Int2D& operator --() {
- addToEvery(-1);
- return *this;
- }
- Int2D operator-- (int)
- {
- Int2D result(*this);
- --(*this);
- return result;
- }
- Int2D operator + (Int2D const& arr) {
- if (this->n != arr.n || this->m != arr.m)
- throw "Разные размерности массивов!";
- Int2D res = Int2D(n, m);
- for (int i = 0; i < n; i++)
- for (int j = 0; j < m; j++)
- res.intArray[i][j] += intArray[i][j] + arr.intArray[i][j];
- return res;
- }
- };
- int main() {
- setlocale(LC_ALL, "Russian");
- auto a = Int2D(3, 3), b = Int2D(3, 3);
- cout << "Заполните массив A[3x3]:\n";
- a.write();
- cout << "Заполните массив B[3x3]:\n";
- b.write();
- cout << "Количество нулевых эл. в массиве A:\n" << a.zeroItemsCount() << endl;
- cout << "Добавляем по 2 каждому эл. массива A.\n";
- a++; a++;
- cout << "Новый массив A:\n";
- a.print();
- cout << "Сумма 2 столбца массива A:\n" << a.summCollum(1) << endl;
- int newDiag;
- cout << "Введите новый скаляр для гл.диагонали массива A: ";
- cin >> newDiag;
- a.setDiag(newDiag);
- cout << "Новый массив A:\n";
- a.print();
- cout << "Складываем массивы A и B, результирующий:\n";
- auto c = a + b;
- c.print();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement