Как я уже упоминал в комментариях, вы прочитали input
один раз в начале в l oop и сравните его с -1
в конце в l oop, поэтому -1
будет обрабатываться так же, как и любое другое значение input
.
Очевидный вариант - читать в двух разных местах: один раз перед l oop и один раз на конец l oop, таким образом вы получите новое input
значение непосредственно перед вашим условием l oop:
printf("Input: \n");
scanf("%d", &input);
while(input != -1) {
// Processing
scanf("%d", &input);
}
Обратите внимание, что я также переключил l oop на while
l oop вместо do ... while
l oop, как если бы входные данные only содержали -1
, тогда do ... while
все равно обработал бы его , что приводит к неправильному выводу.
Вы также не принимаете во внимание, что пакет может быть неполным в конце вашего l oop, это можно решить, проверив, если вы у вас есть бесчисленный пакет после вашего l oop:
printf("Input: \n");
scanf("%d", &input);
while(input != -1) {
// Processing
scanf("%d", &input);
}
if(diff != 50) {
output++;
}