Поиск столбца с минимальным произведением в матрице - C (СИ)
Формулировка задачи:
вот задачка: среди столбцов заданной целочисленной матрицы, содержащих только такие элементы, которые по модулю не больше 10, найдите столбец с минимальным произведением элементов.
Подскажите, пожалуйста где тут ошибка!!!Заранее очень благодарна!
код программы
#include <iostream.h>
#include <math.h>
#include <conio.h>
#define M 3
#define N 4
int main(void)
{clrscr();
int i,j,pr,min=32768,stl;
int A[M][N]={{5,7,1,8},
{4,3,-7,6},
{3,9,-1,2}};
for(j=0;j<N;j++){
pr=1;
for (i=0;i<M;i++){
pr*=(A[i][j]);
cout<<A[i][j]<<' ';
cout<<'\n';
if(min<pr){
min=pr;stl=j;}
} }
cout<<"Stolbec s min proizvedeniem "<<stl<<endl;
cout<<"Min proizvedenie="<<pr;
return 0;
}Решение задачи: «Поиск столбца с минимальным произведением в матрице»
textual
Листинг программы
#include <stdio.h>
#include <limits.h>
#define n 3
#define m 3
int main()
{
int matrix[n][m] = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
int min_product = INT_MAX;
int min_index = -1;
int i;
int j;
int product;
for (i = 0; i < m; ++i) {
product = 1;
for (j = 0; j < n; ++j)
product *= matrix[j][i];
if (product < min_product) {
min_product = product;
min_index = i;
}
}
printf("Min index: %d\n", min_index);
printf("Min product: %d\n", min_product);
return 0;
}
Объяснение кода листинга программы
В этом коде выполняется поиск столбца с минимальным произведением в матрице. Список действий:
- Создается матрица размером n на m и заполняется значениями.
- Создаются две переменные: min_product (минимальное произведение) и min_index (номер столбца с минимальным произведением), которые инициализируются значениями INT_MAX и -1 соответственно.
- Выполняется два вложенных цикла: первый - по столбцам матрицы, второй - по строкам.
- Внутри второго цикла перемножаются элементы строки, результат сохраняется в переменную product.
- Если product меньше min_product, то обновляются значения min_product и min_index.
- После завершения циклов выводятся на экран значения min_index и min_product.
- Программа возвращает 0, заканчивая свою работу.