Покажите пожалуйста как заменить элемент каждой строки матрицы где находится максимальный элемент суммой побочной диагонали
Пример
М = (51 4 -1)
(3 1 13)
(-8 4 51)
Результат
M = (-8 -8 -8)
(9 0 169)
(-8 -8 -8)
C/C++
Вопрос по Си
Допустим, у тебя есть матрица M 3 на 3 и сумма диагонали в переменной sum, а максимальный элемент найден и хранится в max
bool flag = false;
for (short i = 0; i < 3; i++){
for (short j = 0; j < 3; j++){
if (M[i][j] == max) flag = true;
}
if (flag) {
for (short j = 0; j < 3; j++) {
M[i][j] = sum;
flag = false;
}
}
}
Писала прямо тут, со скобками могла напутать
bool flag = false;
for (short i = 0; i < 3; i++){
for (short j = 0; j < 3; j++){
if (M[i][j] == max) flag = true;
}
if (flag) {
for (short j = 0; j < 3; j++) {
M[i][j] = sum;
flag = false;
}
}
}
Писала прямо тут, со скобками могла напутать
#include <iostream>
int max(int* A, int size) //найти элемент с максимальным значением
{
int max = *A;
for (int i = 1; i < size * size; i++)
if (max < A[i]) max = A[i];
return max;
}
int diag(int* A, int size) //найти сумму побочной диагонали
{
int summ{};
for (int i = 0; i < size; i++) summ += A[i * size + size - i - 1];
return summ;
}
void repl(int* A, int size, int val)//заменить строку А значением val
{
for (int i = 0; i < size; i++) A[i] = val;
}
void prog(int* A, int size, int max, int diag)//поиск строк с максимальным значением и их замена
{
for (int i = 0; i < size; i++)
{
for (int j = 0; j < size; j++)
{
if (A[size * i + j] == max) { ::repl(A + size * i, size, diag); break; }
}
}
}
int main()
{
const int n = 3;
int max_el;
int diag_s;
int M[n][n] //исходный массив
{
{51,4,-1},
{3,1,13},
{-8,4,51}
};
max_el = ::max(*M, n);
diag_s = ::diag(*M, n);
//std::cout << max_el << " " << diag_s;
::prog(*M, n, max_el, diag_s);
//печать элементов в стиле с++ для си замените std::cout и endl на printf,
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) std::cout << M[i][j] << " ";
std::cout << std::endl;
}
}
int max(int* A, int size) //найти элемент с максимальным значением
{
int max = *A;
for (int i = 1; i < size * size; i++)
if (max < A[i]) max = A[i];
return max;
}
int diag(int* A, int size) //найти сумму побочной диагонали
{
int summ{};
for (int i = 0; i < size; i++) summ += A[i * size + size - i - 1];
return summ;
}
void repl(int* A, int size, int val)//заменить строку А значением val
{
for (int i = 0; i < size; i++) A[i] = val;
}
void prog(int* A, int size, int max, int diag)//поиск строк с максимальным значением и их замена
{
for (int i = 0; i < size; i++)
{
for (int j = 0; j < size; j++)
{
if (A[size * i + j] == max) { ::repl(A + size * i, size, diag); break; }
}
}
}
int main()
{
const int n = 3;
int max_el;
int diag_s;
int M[n][n] //исходный массив
{
{51,4,-1},
{3,1,13},
{-8,4,51}
};
max_el = ::max(*M, n);
diag_s = ::diag(*M, n);
//std::cout << max_el << " " << diag_s;
::prog(*M, n, max_el, diag_s);
//печать элементов в стиле с++ для си замените std::cout и endl на printf,
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) std::cout << M[i][j] << " ";
std::cout << std::endl;
}
}
Похожие вопросы
- День добрый \[-_-]/ вопрос по вузовскому программированию на си(C)
- Актуальность Си и Си++
- Изучение Си/Си++ дорожная карта?
- Возможно ли создание ЯП производительнее Си?
- Си!!! БЕЗ УКАЗАТЕЛЕЙ, ЯЗЫК СИ
- Решить задачу на языке СИ
- Программа на СИ. Циклы с постусловием и предусловием
- Написать код на языке си
- Написать программу на языке Си
- Помогите пожалуйста написать программу на Си