Вопрос задан 05.07.2023 в 18:41. Предмет Информатика. Спрашивает Балакирева Алина.

Найти сумму элементов главной диагонали квадратной матрицы и заменить ею максимальный элемент.

Оформить в виде функций. С++ пожалуйста
0 0
Перейти к ответам

Ответы на вопрос

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Лик Эмилия.

#include <iostream>

#include <iomanip>

using namespace std;

int** matrCreate(int n)

{

   int** M;

   M = new int *[n];

   for (int i = 0; i < n; i++)

       M[i] = new int [n];

   return M;

}

void matrInit(int** M, int n)

{

   srand(time(0));

   for(int i = 0; i < n; i++)

    for(int j = 0;  j < n;  j++)

     M[i][j] = rand()%199 - 99 ;

}

void matrPrint(int** M, int n)

{

   for(int i = 0; i < n; i++)

{

    for(int j = 0;  j < n;  j++)

     cout << setw(5) << M[i][j];

   cout << endl;

}

}

void matrTransform(int** M, int n)

{

   int im, jm, max = -1000, s = 0;

   for(int i = 0; i < n; i++)

{

    for(int j = 0;  j < n;  j++)

    {

        if (M[i][j] > max)

        {

            max = M[i][j];

            im = i;

            jm = j;

        }

        if (i == j)

            s += M[i][j];

    }

}    

M[im][jm] = s;    

}

void clearMem(int** M, int n)

{

   for (int i = 0; i < n; i++)

{

 delete [] M[i];

}

delete [] M;

}

int main()

{

   int n;

   cin >> n;

   int **A;

   A = matrCreate(n);

   matrInit(A, n);

   matrPrint(A, n);

   cout << endl;

   matrTransform(A, n);

   matrPrint(A, n);

   clearMem;

   return 0;

}


0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Конечно, вот пример кода на C++, который реализует указанные вами операции:

cpp
#include <iostream> #include <vector> // Функция для нахождения суммы элементов главной диагонали int calculateDiagonalSum(const std::vector<std::vector<int>>& matrix) { int sum = 0; for (int i = 0; i < matrix.size(); ++i) { sum += matrix[i][i]; } return sum; } // Функция для замены максимального элемента суммой главной диагонали void replaceMaxWithDiagonalSum(std::vector<std::vector<int>>& matrix) { int maxElement = matrix[0][0]; int maxRow = 0; int maxCol = 0; // Находим максимальный элемент и его позицию в матрице for (int i = 0; i < matrix.size(); ++i) { for (int j = 0; j < matrix[i].size(); ++j) { if (matrix[i][j] > maxElement) { maxElement = matrix[i][j]; maxRow = i; maxCol = j; } } } // Находим сумму главной диагонали int diagonalSum = calculateDiagonalSum(matrix); // Заменяем максимальный элемент суммой главной диагонали matrix[maxRow][maxCol] = diagonalSum; } int main() { int n; std::cout << "Введите размер квадратной матрицы: "; std::cin >> n; std::vector<std::vector<int>> matrix(n, std::vector<int>(n)); std::cout << "Введите элементы матрицы:\n"; for (int i = 0; i < n; ++i) { for (int j = 0; j < n; ++j) { std::cin >> matrix[i][j]; } } replaceMaxWithDiagonalSum(matrix); std::cout << "Матрица после замены максимального элемента:\n"; for (int i = 0; i < n; ++i) { for (int j = 0; j < n; ++j) { std::cout << matrix[i][j] << " "; } std::cout << "\n"; } return 0; }

Вы можете скопировать и вставить этот код в свою среду разработки для компиляции и выполнения. Этот код сначала считывает размер квадратной матрицы, затем считывает её элементы, находит максимальный элемент, заменяет его суммой главной диагонали и выводит измененную матрицу.

0 0

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос