Cin требует 2 входа

0

Я пытаюсь сделать функцию, которая гарантирует, что число больше нуля, но всякий раз, когда пользователь не вводит число больше нуля, он должен ввести значение два раза, прежде чем код будет продолжен. Пожалуйста помоги!

int userInput()
{
    int goAhead = 0;
    int a;

    while (goAhead == 0)
    {
        cin >> a;
        if(a <= 0 )
        {
            cout << "The  can not be less than or equal to zero, enter another value: " << endl;
            cin >> a;
            cin.ignore();
        }
        else
        {
            // enter code here
            goAhead = 1;
        }
        return a;
    }
}
  • 0
    это не так ясно
Теги:
cin

4 ответа

0
Лучший ответ

Я надеюсь, что это помогает:

    int userInput()
    {
        int a = 0;
        while(a <= 0) {
            cout << "Enter value greater than zero: " << endl;
            cin >> a ;
            if(a <= 0)
                cout << "Input incorrect. Please try again " << endl;
        } 
        return a;
    }
  • 1
    pedantical nitpick: этот код представляет собой бесконечный цикл, если поток переходит в состояние плохой / сбой. Исправить это сложно, хотя, я бы не рекомендовал его новичкам.
  • 0
    Спасибо! Я довольно новичок в c ++, поэтому я все усложняю, чем должно быть. Я не понимаю, почему в исходном коде есть маленькая ошибка. Ну хорошо, спасибо!
Показать ещё 2 комментария
0

это должно делать то, что вы пытаетесь

int userInput()
{
     int a;
     cin >> a;
     while(a <= 0 )
     {
         cout << "The  can not be less than or equal to zero, enter another value: "<< endl;
         cin >> a;
         cin.ignore();
     }
     return a;
}
0

Попробуйте использовать цикл while

cin>>a;
while(a<=0)
{
System.out.println("Please enter again");
cin>>a;
}

если вы хотите еще 2 раза, просто добавьте счетчик.

Надеюсь, это было полезно.

0
    int userInput()
    {
        int a;
        int tries = 2; // this will count down to 0, which then return anything you want as an invalid answer

        do
        {
            cout << "enter value: ";
            cin >> a;

            if( a  > 0 ) 
            {
                return a;
            }
            else
            {
                if(--tries > 0)
                {
                    cout << "The can not be less than or equal to zero" << endl;
                }
                else
                {
                    cout << "returning -1" << endl;
                    return -1;
                }
            }
        }while (true);
    }

Ещё вопросы

Сообщество Overcoder
Наверх
Меню