Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "pch.h"
- #include <iostream>
- #include <ctime>
- using namespace std; // все как обычно
- class vvod { // объявление класса
- protected: // переменные, которые будем передавать во второй класс
- int n;
- int **array;
- public:
- vvod(){} // конструктор по умолчанию
- vvod(int **array) { // конструктор с параметром
- this->array = array;
- }
- ~vvod() { // деструктор
- for (int i = 0; i < n; i++) {
- delete[] array[i];
- }
- delete[] array;
- }
- void setarray() { // выделение памяти под массив
- cout << "Введите размер квадратной матрицы: ";
- cin >> n;
- cout << endl;
- array = new int*[n];
- for (int i = 0; i < n; i++) {
- array[i] = new int[n];
- }
- }
- void zapolnenie() { // рандомное заполнение массива, ничего необычного
- for (int i = 0; i < n; i++) {
- for (int j = 0; j < n; j++) {
- array[i][j] = rand() % 30;
- }
- }
- }
- void showarray() { // вывод массива на экран, тоже все как обычно
- cout << "Массив:" << endl;
- for (int i = 0; i < n; i++) {
- for (int j = 0; j < n; j++) {
- cout << array[i][j] << "\t";
- }
- cout << endl;
- }
- }
- };
- class solution : public vvod { // класс наследователь
- private:
- int i1, j1, sum = 0, temp, max = -1; // переменные, которые будем использовать здесь
- public:
- solution(){} // конструктор по умолчанию
- solution(int i1, int j1, int temp, int sum, int **array, int max) : vvod(array) { // конструктор с параметром
- this->i1 = i1;
- this->j1 = j1;
- this->sum = sum;
- this->temp = temp;
- this->max = max;
- }
- void fun() { // метод основной, я ничего не менял почти, кроме того, что за изначальный максимум взял -1
- for (int i = 0; i < n; i++) {
- for (int j = 0; j < n; j++) {
- if (array[i][j] > max) {
- max = array[i][j]; // без этой строки оно не работало
- i1 = i;
- j1 = j;
- }
- }
- }
- if (j1 > i1)
- {
- cout << "Максимальный элемент расположен выше главной диагонали, транспанируем матрицу:" << endl;
- for (int i = 0; i < n; i++) {
- for (int j = 1; j < n; j++) {
- temp = array[i][j];
- array[i][j] = array[j][i];
- array[j][i] = temp; // дальше все как у тебя в решении было
- }
- }
- showarray();
- }
- else if (j1 < i1)
- {
- for (int i = 0; i < n; i++) {
- sum += array[i][j1];
- sum += array[i1][i];
- }
- sum -= array[i1][j1];
- cout << "Элемент находится ниже главной диагонали, сумма элементов строки и столбца = " << sum;
- }
- else if(j1 == i1)
- {
- cout << "Элемент на главной диагонали";
- }
- }
- };
- int main()
- {
- setlocale(LC_ALL, "Russian");
- srand(time(NULL)); //
- solution obj; // создание объекта класса
- obj.setarray(); // вызов методов
- obj.zapolnenie();
- obj.showarray();
- obj.fun();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement