Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <clocale>
- using namespace std;
- class Matrix
- {
- protected:
- int r, c, k;
- int** Matr;
- // Создаём матрицу
- void Create()
- {
- if (r <= 0 || c <= 0)
- return;
- Matr = new int* [r];
- for (int z = 0; z < r; z++)
- Matr[z] = new int[c];
- }
- public:
- // Конструкторы и деструктор
- Matrix() : r(0), c(0), Matr(nullptr) { k = 0; }
- ~Matrix()
- {
- for (int z = 0; z < r; z++)
- delete[] Matr[z];
- delete[] Matr;
- }
- // Получаем данные от пользователя и создаем с ними матрицу
- void get_data_and_create()
- {
- cout << "Введите кол-во строк: \n";
- cin >> r;
- cout << "Введите кол-во столбцов: \n";
- cin >> c;
- cout << "Введите k: \n";
- cin >> k;
- Create();
- for (int i = 0; i < r; i++) // Указатель i
- {
- for (int j = 0; j < c; j++) // Цикл, заполняющий массив / указатель j
- {
- cout << "Массив [" << i + 1 << "][" << j + 1 << "] = "; // Показываем, какой элемент сейчас вводим
- cin >> Matr[i][j]; // Вводим этот элемент
- }
- }
- }
- int& Element(int i, int j)
- {
- if (i < r && j < c)
- return Matr[i][j];
- else
- cout << "Error: 1";
- }
- };
- class actions : public Matrix
- {
- private:
- int mincolnum, mincolsum, tempcolsum;
- public:
- actions()
- {
- mincolnum = 0;
- mincolsum = 0;
- tempcolsum = 0;
- }
- // Доп. методы
- //
- // Выводим матрицу на экран
- void Display()
- {
- cout << "\nМатрица:\n\n";
- for (int i = 0; i < r; i++)
- {
- for (int j = 0; j < c; j++)
- {
- cout.width(5);
- cout << Matr[i][j];
- }
- cout << endl;
- }
- }
- // Сумма первого столбца
- void FirstColumnSum()
- {
- for (int i = 0; i < r; i++)
- mincolsum += Matr[i][0];
- }
- // Минимальная сумма столбца
- void MinColumnSum()
- {
- FirstColumnSum();
- for (int i = 1; i < c; i++)
- {
- for (int j = 0; j < r; j++)
- tempcolsum += Matr[j][i];
- if (tempcolsum < mincolsum)
- {
- mincolsum = tempcolsum;
- mincolnum = i;
- }
- tempcolsum = 0;
- }
- cout << "\nМинимальная сумма столбца и его номер - " << mincolsum << " " << mincolnum + 1 << endl;
- }
- // Выводим результат на экран
- void DisplayResult(int _i, int _c)
- {
- cout << "Номера столбцов и их сумма: \n\n";
- for (int i = _i; i < _c; i++)
- {
- for (int j = 0; j < r; j++)
- tempcolsum += Matr[j][i];
- cout << i + 1 << " = " << tempcolsum << endl;
- tempcolsum = 0;
- }
- }
- // В зависимости от выволнения условия, указанного в задании, выводим данные
- void result()
- {
- MinColumnSum();
- tempcolsum = 0;
- if (mincolnum == k - 1) DisplayResult(0, mincolnum);
- if (mincolnum != k - 1) DisplayResult(k, c);
- }
- };
- int main()
- {
- setlocale(LC_ALL, "russian");
- Matrix M;
- actions AT;
- AT.get_data_and_create();
- AT.Display();
- AT.result();
- return 0;
- }
Add Comment
Please, Sign In to add comment