Найти в матрице столбец с максимальным произведением. - C (СИ)
Формулировка задачи:
Всем доброго времени суток, помогите люди добрые, закралась ошибка в мой код, никак не могу выявить. Задание видно из заголовка, матрица произвольная.
Неправильно высчитывает произведение и номер столбца, не могу понять почему
Всем заранее спасибо, бобра, любви и тепла.
#include<stdio.h> void main() { float M[5][5], k=0.00, h=1.00; int x,y,b; printf("\n Vvedite massiv: \n"); for(x=0;x<=4;x++) { for(y=0;y<=4;y++) { scanf("%f", &M[x][y]); /*Vvod massiva */ } } for(y=0;y<=4;y++); { for(x=0;x<=4;x++) { h=h*M[x][y]; /*Proizvedenie vsex elementov stolbca */ } printf("\n h = %f", h); /*Otlado4naya pe4at' */ if(h>=k) /*esli proizvedenie predidushego stlbc*/ { /*bolshe chem proizvedenie dannogo */ k=h; /*prisvaivaem ego k*/ b=y; /*zapisivaem nomer stolbca*/ } h=1; /*sbros peremennoi h*/ } printf("\n Stolbec s maximalnim proizvedeniem - %d",b); printf("\n Ego proizvedenie = %f", k); }
Решение задачи: «Найти в матрице столбец с максимальным произведением.»
textual
Листинг программы
#include<stdio.h> #include <stdlib.h> int main() { int const size = 3; float M[ size ][ size ], k = 0.00, h = 1.00; int x, y, b; printf ( "\n Vvedite massiv: \n" ); for ( x = 0; x < size; ++x ) for ( y = 0; y < size; ++y ) scanf ( "%f", &M[ x ][ y ] ); /*Vvod massiva */ for ( x = 0; x < size; ++x ) { for ( y = 0; y < size; ++y ) printf ( "%5f ", M[ x ][ y ] ); puts(""); } puts(""); for ( y = 0; y < size; ++y ) { for ( x = 0; x < size; ++x ) h = h * M[ x ][ y ]; /*Proizvedenie vsex elementov stolbca */ printf ( "\n h = %f", h ); /*Otlado4naya pe4at' */ if ( h >= k ) { /*bolshe chem proizvedenie dannogo */ k = h; /*prisvaivaem ego k*/ b = y; /*zapisivaem nomer stolbca*/ } h = 1; /*sbros peremennoi h*/ } printf ( "\n Stolbec s maximalnim proizvedeniem - %d", b ); printf ( "\n Ego proizvedenie = %f", k ); exit(EXIT_SUCCESS); }
Объяснение кода листинга программы
- Объявлены переменные:
- size - размер матрицы (3);
- M[size][size] - матрица (3x3);
- k - общее произведение столбца;
- h - текущее произведение столбца;
- x, y, b - счётчики для циклов.
- Ввод матрицы с помощью цикла и функции scanf.
- Вывод матрицы на экран с помощью цикла и функции printf.
- Инициализация h произведением первого элемента каждого столбца.
- Цикл по всем столбцам (y) и внутренний цикл по всем элементам столбца (x). Внутренний цикл вычисляет произведение элементов текущего столбца и присваивает его переменной h.
- Если произведение текущего столбца больше k, то обновляем k и b (номер столбца).
- После внутреннего цикла сбрасываем h в 1.
- После цикла по всем столбцам выводим на экран номер столбца с максимальным произведением и его произведение.
- Выход из программы с помощью функции exit.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д