Можете ли вы мне помочь, у меня есть проблема. Это программа, которая транспонирует матрицу. Когда число строк или столбцов равно 357 или больше, программа не работает (определите MAX_n 357, определите MAX_m 357). Когда работает менее 357, программа работает нормально.C программирование транспонированной матрицы, #define
#include <stdio.h>
#include <stdlib.h>
#define MAX_m 357
#define MAX_n 357
void main()
{
int a[MAX_m][MAX_n],b[MAX_m][MAX_n];
int r=0,j,i;
printf("\nProgram to transpose matrix\n");
for(i=0;i<MAX_m;i++)
{
for(j=0;j<MAX_n;j++)
{
r=rand();
a[i][j]=r;
}
}
printf("\nMatrix A: ");
for(i=0;i<MAX_m;i++)
{
printf("\n");
for(j=0;j<MAX_n;j++)
{
printf(" ");
printf("%d",a[i][j]);
}
}
for(i=0;i<MAX_m;i++)
{
for(j=0;j<MAX_n;j++)
{
b[i][j]=a[j][i];
}
}
printf("\nResultant Matrix: ");
for(i=0;i<MAX_m;i++)
{
printf("\n");
for(j=0;j<MAX_n;j++)
{
printf(" ");
printf("%d",b[i][j]);
}
}
printf("\n");
return(0);
}
«357 или больше программа не работает» - как это происходит? - сбой, зависание, неправильный вывод, что-то еще? –
'a' выделяется в стеке. Возможно ли, что вы используете слишком много стека? 357 * 357 * sizeof (int) составляет около 1/2 мега. Что происходит, когда вы динамически выделяете 'a' вместо этого? –
хуже, он выделяет это количество пространства дважды, для 'a' и' b', используя почти мегабайт стека. Расскажите нам, что происходит, когда вы объявляете 'a' и' b' глобальными переменными. –