Ошибка сегментации в массиве констант - 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.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д