Вывести индекс строки массива с наибольшей по модулю суммой - C (СИ)
Формулировка задачи:
Cоздать двумерный массив из 7 строк по 4 столбца в каждой из случайных целых чисел из отрезка [-5;5]. Вывести массив на экран. Определить и вывести на экран индекс строки с наибольшим по модулю произведением элементов. Если таких строк несколько, то вывести индекс первой встретившейся из них.
Не знаю как и быть, подскажите, какие у кого идеи, может знаете как написать. Си (code::Blocks) заранее спасибо)
Решение задачи: «Вывести индекс строки массива с наибольшей по модулю суммой»
textual
Листинг программы
#include<stdio.h>
const int n=7;
const int m=4;
int main()
{
int K[n][m];
srand(time(NULL));
int i,j,pr=1,max=0,mi=0;
for(i=0;i<n;i++){
if(abs(pr)>max) {max=abs(pr); mi=i-1;}
puts("\n");
pr=1;
for(j=0;j<m;j++){
K[i][j]=(rand()%11)-5;
pr=pr*K[i][j];
printf("%2d ", K[i][j]);
}}
printf("\nMax Ind %d",mi);
return 0;
}
Объяснение кода листинга программы
В этом коде выполняется следующее:
- Связывание и инициализация массива:
- Строка
const int n=7;устанавливает размер первого измерения массива K, равным 7. - Строка
const int m=4;устанавливает размер второго измерения массива K, равным 4. - Строка
int main()указывает, что следующий блок кода является функцией main (основной функцией программы). - Строка
int K[n][m];объявляет двумерный массив K размером n на m и инициализирует его значениями 0. - Строка
srand(time(NULL));устанавливает начальное значение для генератора случайных чисел на текущее время, чтобы каждый раз получать разные случайные числа.
- Строка
- Вычисление максимальной суммы по модулю:
- Цикл
for(i=0;i<n;i++){проходит по всем строкам массива K. - Внутри цикла находится вложенный цикл
for(j=0;j<m;j++){, который проходит по всем столбцам массива K. - В каждой ячейке массива K вычисляется значение
K[i][j]=(rand()%11)-5;(случайное число от -5 до 5, включительно). - Значение каждой ячейки используется для вычисления значения
pr=pr*K[i][j];(общая сумма в строке). - Затем значение
prвыводится на экран с помощьюprintf(%2d, K[i][j]);. - После прохождения всех ячеек в строке, значение
prсравнивается с максимальным значениемmax. Еслиabs(pr)большеmax, тоmaxобновляется, аmiзапоминает индекс предыдущей строки. - После прохождения всех строк, выводится сообщение
printf(\nMax Ind %d,mi);с индексом строки, в которой была наибольшая сумма по модулю. Таким образом, этот код генерирует двумерный массив случайных чисел, вычисляет сумму каждой строки и находит строку с наибольшей суммой по модулю.
- Цикл