Я получаю ошибку сегментации при выполнении команды l oop
Первая ошибка сегментации происходит в этой строке:
list[index] = w;
Как вы думаете, это значение index
?
Вы не инициализировали его значением, которое, вероятно, должно было быть 0
.
Следовательно, доступ к list[index]
является неопределенным поведением. В вашем случае это вызвало ошибку сегментации.
Тогда внутри for(i = 0;i < ((sizeof(list)/sizeof(list[0]))+1);i++)
Доступ к list[i]
здесь может вызвать еще один segfault с конечным значением i
. Вы должны удалить +1
из ((sizeof(list)/sizeof(list[0]))+1)
.
Решение:
Выполнить index = 0;
один раз (инициализация) перед выполнением list[index] = w;
Удалите +1
из ((sizeof(list)/sizeof(list[0]))+1)
Но было бы лучше изменить
for(i = 0;i < ((sizeof(list)/sizeof(list[0])));i++)
до
for (i = 0; i < 15; ++i)
Поскольку вы уже знаете, что размер ваших list
и list[15]
гарантированно составит -1
, если имеется 15 весов. Итак, вам просто нужно перейти к list[14]
.
Это просто устраняет ошибку segfault, но в вашем коде все еще есть другие проблемы.
Я хочу знать, почему код не работает, а затем решить вопрос самостоятельно.
Лог c внутри вашего for-l oop неверен.
sum =0;
if(sum <= 50)
Это условие всегда верно и ваш блок else, который увеличивает значение t
, никогда не выполняется. Следовательно, на выходе всегда будет начальное значение, которое вы присваиваете t
.