Форум С++

 

Ответить на сообщение

Вернуться к теме

Вы отвечаете на сообщение:

Автор: Min_Fin   (19.09.2009 в 06:39)
В общем есть задача: в двумерном массиве m x n. Определить, что больше: произведение значений компонентов строки или произведение значений компонентов столбца, на пересечении которых находится наименьшее значение в массиве. Написал программу, с некоторыми матрицами работает, а в некоторых не корректно запоминает строки и столбец.
Проверял на матрице 3 х 3, элементы: 2 4 6 7 1 3 5 8 9. Помогите найти ошибку. Вот код:

#include <stdio.h>
#include <stdlib.h>

double main(void)
{
int i, j, m, n, tmp;
double **array;

printf("Stroki: ");
scanf("%d",&m);


printf("Stolbcy: ");
scanf("%d",&n);


array = (double**) malloc(m * sizeof(double*));

for (i=0; i<m; i++)
{
array[i] = (double*) malloc(n * sizeof(double));

}


// Ввод массива
printf("Input mass razmernosti %d x %d):\n", m, n);
for (i=0; i<m; i++)
{
for (j=0; j<n; j++)
{
printf("(%d,%d) ", i+1, j+1);
if (scanf("%lf", &array[i][j]) != 1)
{
for (tmp=0; tmp<m; tmp++)
free(array[tmp]);
free(array);
return 0;
}
}
}


// Вывод массива
for (i=0; i<m; i++)
{
printf("\n\n");
for (j=0; j<n; j++)
printf("%7.1f", array[i][j]);
}

printf("\n\n");


double min; // min - минимальный элемент массива
int nstr, nstl; // номер строки и столбца, на пересечении котрых элемент находится
min = array [1][1];
for (i=0; i<m; i++)
{
for(j=0;j<n; j++)
{
if (array[i][j] < min)
{
nstr = i;
min = array [i][j];
nstl = j;
}

}
}

double pr1, pr2;
pr1=1; // произведение элементов строки
pr2=1; // произведение элементов столбца
for (j=0; j<n; j++)
{
pr1 = pr1 * array [nstr][j];
}
for (i=0; i<m; i++)
{
pr2 = pr2 * array [i][nstl];
}
printf("%7.1f", pr1);
printf("%7.1f", pr2);


return 0;
}


Ваше имя:

Пароль:

Цитировать

Используйте тэги для выделения текста:
Код: [code][/code]
Жирный: [b][/b]
Наклонный: [i][/i]
URL: [url][/url]

Сообщение:

Прикрепить: