Почему второй код дает желаемый результат, а первый нет? - PullRequest
0 голосов
/ 21 января 2020

Когда я использую функции, я получаю желаемый результат, который: -

1) Окно команд просит меня вводить каждый раз, чтобы я мог вводить 'q' столько раз, сколько захочу, и могу даже введите 'e' для выхода

2) Каждый раз, когда я нажимаю 'q', оценка уменьшается на 1

, тогда как в коде без функций происходит следующее: -

1) Я нажимаю 'q', и счет продолжает уменьшаться бесконечно

2) Невозможно ввести другой ввод, такой как 'e', ​​после ввода 'q'

 #include<iostream>

 using namespace std;

 int main()
{
 char h;
 cin>>h;
 int n = 10;

 do{
    system("cls");
    cout<<"score is"<<n;        
    if(h == 'q')
    {
        n=n-1;
    }

}while(h != 'e');
return 0;

}

CODE 2 с помощью FUNCTION: -

    #include<iostream>

    using namespace std;

    char input;
    int n = 10;
    bool over = false;
    void ip()
    {       
        system("cls");  
        cout<<"score is"<<n;
        cin>>input;
        switch(input)
       {
           case 'q':
           n--;
           break;

           case 'e':
           over = true;
           break;
       }
    }

    int main()
    {

        do{     
            ip();       
        }while(!over);
        return 0;
     } 

Пожалуйста, объясните мне, как программа циклически выполняет функцию и как она выполняет только оператор IF. Поскольку в функции также есть оператор условия (оператор switch), почему же функция не уменьшает счет или значение 'n' бесконечно ??

1 Ответ

1 голос
/ 21 января 2020

Я понял свою ошибку в первом коде (без функций), оператор cin>> должен быть внутри do - while l oop, чтобы после каждого ввода l oop запрашивался.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...