Вывести на экран индекс строки матрицы с наибольшим по модулю произведением элементов - C (СИ)
Формулировка задачи:
В общем такая проблема:
Cоздать двумерный массив из 7 строк по 4 столбца в каждой из случайных целых чисел из отрезка [-5;5]. Вывести массив на экран. Определить и вывести на экран индекс строки с наибольшим по модулю произведением элементов. Если таких строк несколько, то вывести индекс первой встретившейся из них.
Вот мои наработки.
Работает не корректно, можете помочь?
#include <stdio.h> #include <math.h> #include <stdlib.h> int main () { int i,j; int mas [4][7]; int ind = 0; int sum = 0; int max = 0; for (i = 0; i < 4; i++);{ sum = 0; for (j = 0; j < 7; j++);{ mas[i][j] = rand () % -5,5; sum += mas [i][j];} if (sum > max) { max = sum; ind = i; } } printf ("index naibolshei stroki :\n"); printf ("%d\n", max); printf ("summa ee elementov ravna\n"); printf ("%d\n", ind); return 0; }
Решение задачи: «Вывести на экран индекс строки матрицы с наибольшим по модулю произведением элементов»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #include <time.h> int main() { char a[7][4], i = 0, j, ind = 0; int p, max = 1; srand((int)time(0)); while (i < 28) { printf("%3d", *(*a + i++) = rand() % 11 - 5); if (!(i % 4)) putchar('\n'); } for (i = 0; i < 4; i++) max *= a[0][i]; for (i = 1; i < 7; i++) { p = 1; for (j = 0; j < 4; j++) p *= a[i][j]; if (p > max || -p > max) { max = p; ind = i; } } printf("%d", ind); }
Объяснение кода листинга программы
Вывод на экран индекса строки матрицы с наибольшим по модулю произведением элементов осуществляется следующим образом:
- Создается матрица случайных чисел размером 7x4.
- Перебираются все строки матрицы, начиная с первой.
- Для каждой строки находится произведение всех ее элементов.
- Если произведение текущей строки больше или равно по модулю наибольшему найденному до этого произведению, то обновляется значение индекса строки с наибольшим произведением.
- В конце программы выводится на экран найденный индекс.