Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <ctime>
- //#include "stdafx.h"
- using namespace std;
- // Класс Квадратная Матрица
- class Matrix_Square {
- protected:
- int size = 1;
- int ** matrix;
- public:
- // Метод. Вывод Матрицы
- void printValues() {
- cout << "Матрица:" << endl;
- for (int i = 0; size > i; i++) {
- for (int j = 0; size > j; j++) {
- cout << matrix[i][j] << " ";
- }
- cout << endl;
- }
- cout << endl;
- }
- // Метод. Решение Задачи
- void algorithm() {
- int max = matrix[0][0];
- int max_x = 0;
- int max_y = 0;
- // Поиск максимального элемента
- for (int y = 0; size > y; y++) {
- for (int x = 0; size > x; x++) {
- // Если нашел больше предыдущего максимального
- if (matrix[y][x] > max) {
- max = matrix[y][x];
- max_y = y;
- max_x = x;
- }
- }
- }
- if (max_y < max_x) {
- // Если макс. элемент выше диагонали то
- // то отзеркаливаем
- for (int y = 0; size > y; y++) {
- for (int x = 0; size > x; x++) {
- // Доходя до диагонали - переходим к другой строке
- if (x == y) {
- break;
- }
- // Обмен значениями с помощью переменной-буфер
- int buff = matrix[y][x];
- matrix[y][x] = matrix[x][y];
- matrix[x][y] = buff;
- }
- }
- cout << "Транспортированая матрица:" << endl;
- printValues();
- } else {
- // Если макс. элемент ниже или на диагонали то
- // находим сумму элементов строки и столбца
- int sum = -max; // Вычитаем сразу макс элемент, т.к.
- // будет входить в сумму два раза
- // Находим сумму
- for (int y = 0; size > y; y++) {
- sum += matrix[y][max_x];
- }
- for (int x = 0; size > x; x++) {
- sum += matrix[max_y][x];
- }
- cout << "Сумма элементов строки и столбца, на которых находится макс. элемент: " << sum << endl;
- }
- }
- };
- // Класс Вводимая [Квадратная Матрица]
- class MatrixInput : public Matrix_Square {
- public:
- // Конструктор
- MatrixInput(int size_pr = 5) {
- size = size_pr;
- matrix = new int * [size];
- for (int i = 0; size > i; i++) {
- matrix[i] = new int [size];
- for (int j = 0; size > j; j++) {
- cout << "Введите значение для " << i + 1 << " строки " << j + 1 << " столбца: ";
- cin >> matrix[i][j];
- }
- }
- cout << endl;
- }
- };
- // Класс Случайная [Квадратная Матрица]
- class MatrixRandom : public Matrix_Square {
- public:
- // Конструктор
- MatrixRandom(int size_pr = 5) {
- size = size_pr;
- matrix = new int * [size];
- for (int i = 0; size > i; i++) {
- matrix[i] = new int [size];
- for (int j = 0; size > j; j++) {
- matrix[i][j] = rand() % 10;
- }
- }
- cout << endl;
- }
- };
- int main() {
- srand(time(NULL));
- setlocale(LC_ALL, "Russian");
- MatrixRandom testA(5);
- testA.printValues();
- testA.algorithm();
- MatrixInput testB(3);
- testB.printValues();
- testB.algorithm();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement