Ошибка сегментации в массиве констант - C (СИ)
Формулировка задачи:
Есть часть кода. Условия задачи:найти строку с самым большим произведением и отсортировать строку по возрастанию.
В определенной строке, компилятор CodeBlocks выдает ошибку сегментации, а именно
error: assignment of read-only location 'a0[numb][j]'
const int k=4;
const float a0[4][4]={{15, 17, 25, -5}, {75, 464, 12, 9}, {1, 2, 6, -74}, {67, 94, 41, -46}};
int c,i,j,numb;
float n, s,maxx;
printf("const\n\n");
for(i=0;i<k;i++)
{
for(j=0;j<k;j++) printf("%5.0f",a0[i][j]);
printf("\n");
}
for(i=0;i<k;i++)
{
s=1;
for(j=0;j<k;j++) s=s*a0[i][j];
if(s>maxx)
{
maxx=s;
numb=i+1;
}
}
printf("\nСамое большое произведение S=%f в строке numb=%hd",maxx,numb);
for(j=0;j<k-1;j++);
{
s=0;
for(i=j+1;i<k;i++)
{
if(a0[numb][j]>a0[numb][i])
{
s=a0[numb][j];
a0[numb][j]=a0[numb][i]; ///вот тут выдает ошибку сегментации
a0[numb][i]=s;
}
}
}
printf("\n\nОтсортированная строка: ");
for(j=0;j<k;j++) printf("%5.0",a0[numb][j]);
getch();Решение задачи: «Ошибка сегментации в массиве констант»
textual
Листинг программы
float a0[k][k]={{15, 17, 25, -5}, {75, 464, 12, 9}, {1, 2, 6, -74}, {67, 94, 41, -46}};
Объяснение кода листинга программы
В данном коде объявляется двумерный массив a0 размером kxk, инициализируемый четырьмя вложенными массивами. Каждый вложенный массив состоит из четырех элементов. Значения элементов вложенных массивов присваиваются в цикле. Вложенные массивы инициализируются значениями 15, 17, 25, -5; 75, 464, 12, 9; 1, 2, 6, -74; 67, 94, 41, -46.