Как убрать закрывающее значение пользовательского ввода в массиве? - PullRequest
0 голосов
/ 27 ноября 2018

Я пытаюсь создать программу, которая хранит пользовательский ввод в массивах, до 50 чисел, и перед тем, как отображать числа обратно пользователю.Пользователь может отменить подсчет, введя -999.Однако я не хочу, чтобы -999 отображался, но я не могу удалить значение, не заставляя ВСЕ числа не публиковаться пользователю.Что я делаю не так?

#define INPUT 50
int main() {
int i;
int userInput[INPUT];

for (i = 0; i < INPUT; i++) {
    printf("Enter up to 50 numbers: (-999 to quit): ");
    scanf("%i", &userInput[i]);
    if (userInput[i] == -999) {
        break; 
    }
} 

for (i = 0; i < INPUT && i && userInput[i] !=999; i++) {
    printf("%i. %i\n", i + 1, userInput[i]);
    if (userInput[i] == -999) {
        break;
    }
}
system("pause");

Ответы [ 2 ]

0 голосов
/ 27 ноября 2018

Есть как минимум две проблемы с вашим кодом.

  1. Упростите второе предложение for:

    for (i = 0; i < INPUT; i++) {
    

    Если вы оставите простой iусловие, второй цикл никогда не будет выполнен.

  2. Как сказал Майк, break до с отображением завершающего числа -999.

0 голосов
/ 27 ноября 2018

Сначала вы выполняете printf, а затем проверяете, если -999.Попробуйте изменить:

for (i = 0; i < INPUT; i++) {
    if (userInput[i] == -999) {
        break;
    }
    printf("%i. %i\n", i + 1, userInput[i]);
}
...