while(arr[idx] != -1 && idx <= MAX){ // Fixed by sklivvz
printf("Enter elements, -1 to finish:\n");
scanf("%d", &arr[idx]);
idx++;
}
Прежде всего, вы должны проверить, меньше ли индекс variabel idx, чем MAX (не меньше или равен). Вы вышли бы за пределы, если ваш индекс равен MAX. Массив с MAX = 10 имеет значения индекса от 0 до 9 включительно, но не 10.
Во-вторых, вы добавляете первый элемент к arr [0], увеличиваете свой индекс с 0 до 1, затем возвращаетесь к условию while и проверяете, является ли arr [1] == -1, что не , Поэтому проверьте вместо этого arr [idx-1]! = -1. Однако обратите внимание, что в первый раз, когда вы попадете в цикл while, вы на самом деле проверите arr [-1]! = -1, что также выходит за пределы. ;) Так что вам нужно выяснить, как решить эту проблему.