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

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

#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;
}




Конечно, вот пример кода на 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;
}
Вы можете скопировать и вставить этот код в свою среду разработки для компиляции и выполнения. Этот код сначала считывает размер квадратной матрицы, затем считывает её элементы, находит максимальный элемент, заменяет его суммой главной диагонали и выводит измененную матрицу.


Похожие вопросы
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili