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