Виктор Соловейко
Профи
(523)
2 недели назад
#include <iostream>
#include <vector>
#include <limits>
using namespace std;
int main() {
int n; // Размер матрицы (предполагаем квадратная матрица)
cout << "Введите размер матрицы: ";
cin >> n;
vector<vector<double>> matrix(n, vector<double>(n));
cout << "Введите элементы матрицы:\n";
for (int i = 0; i < n; ++i) {
for (int j = 0; j < n; ++j) {
cin >> matrix[i][j];
}
}
// Поиск единственного максимума в матрице
double maxVal = -numeric_limits<double>::infinity();
int maxRow = -1, maxCol = -1;
int maxCount = 0;
for (int i = 0; i < n; ++i) {
for (int j = 0; j < n; ++j) {
if (matrix[i][j] > maxVal) {
maxVal = matrix[i][j];
maxRow = i;
maxCol = j;
maxCount = 1; // Новый максимум найден, сбрасываем счетчик
} else if (matrix[i][j] == maxVal) {
maxCount++; // Еще один элемент с тем же значением максимума
}
}
}
// Проверка условия: единственный максимум, больше 2.5, на главной диагонали
if (maxCount == 1 && maxVal > 2.5 && maxRow == maxCol) {
for (int i = 0; i < n; ++i) {
for (int j = 0; j < n; ++j) {
if (!(i == maxRow && j == maxCol)) {
matrix[i][j] /= maxVal;
}
}
}
}
// Вывод измененной матрицы
cout << "Результат:\n";
for (int i = 0; i < n; ++i) {
for (int j = 0; j < n; ++j) {
cout << matrix[i][j] << " ";
}
cout << endl;
}
return 0;
}
Если единственный максимум в заданной матрице больше 2.5 и находится на главной диагонали, то все элементы такой матрицы разделить на этот максимум кроме его самого.