2016-08-24 7 views
-3

Я просто пытаюсь заставить пользователя указать свое имя/возраст и проверить, правильно ли оно. Если нет, то они получат 4 попытки до того, как программа прервется. Однако мои циклы while не замыкаются, вместо этого они просто продолжают переход к следующему циклу. Я пробовал изменения вещей внутри в то время как скобка (op != 1) (!(op = 1)) и т.д.Почему этот цикл C++ While не работает?

int main() { 
    system("Color 0A"); 
    string name; 
    int age; 
    int tries = 0; 
    int op = 0; 
    cout << "Hello User" << endl; 
    Sleep(3000); 
    while ((op != 1) && (tries < 4)) { 
     name = entName(name); 
     cout << "So your name is " << name << "?" << endl; 
     cout << "Enter '1' for YES or '2' for NO. "; 
     cin >> op; 
     if (op == 1) { 
      cout << "Perfect!"; 
     }   
     if (op == 2) { 
      cout << "Please Try Again!"; 
      tries+ 1; 
      } 
     if (tries = 4) { 
      //abort the program 
     } 
    } 
    int op2 = 0; 
    int tries2 = 0; 
    while ((op2 != 1) && (tries2 < 4)) { 
     op2 = 3; 
     age = entAge(); 
     cout << "So you are " << age << " years old?" << endl; 
     while ((op2 != 1) && (op2 != 2)) { 
      cout << "Enter '1' for YES or '2' for NO. "; 
      cin >> op2; 
      if (op2 == 1) { 
       cout << "Perfect!\n"; 
      } 
      if (op2 == 2) { 
       cout << "Please Try Again!\n"; 
       tries2++; 
      } 
      if (tries2 = 4) { 
       //abort the programhi 
      } 
     } 
    } 
    return 0; 
} 

Я довольно новыми для C++, так что я извиняюсь, если у него есть простой ответ. Но в любом случае, я отлаживал это более получаса, и я смотрел онлайн 20 минут.

+1

Вы понимаете '=' is assign и '==' правильно сравнение? – Li357

+1

«Я пробовал вариацию вещей внутри скобки». Программирование путем угадывания действительно не очень хорошо, что вы знаете. – Rakete1111

+2

Включить все предупреждения в вашем компиляторе; они поймают такие вещи. '-Wall -Wextra' и' -Weverything', если вы используете clang. – Ryan

ответ

2
if (tries = 4) { 
      //abort the program 
     } 

Изменить это

if (tries == 4) { 
      //abort the program 
     } 

И

f (op == 2) { 
      cout << "Please Try Again!"; 
      tries+= 1; // tries+ 1; 
      } 

Вы можете увеличивать значение в C++ как этот tries+ 1;. Либо использовать tries+= 1; или tries++;

+0

Ничего себе ..... Что-то такое просто. Не могу поверить, что я этого не замечал. спасибо – JimmyCode

2

tries+ 1; должен быть tries += 1; или tries++;

И

if (tries = 4) { 
    //abort the program 
} 

должно быть:

if (tries == 4) { 
    //abort the program 
} 
0

Ваша программа должна выглядеть следующим образом:

int main() 
{ 
    system("Color 0A"); 
    string name; 
    int age; 
    int tries = 0; 
    int op = 0; 
    cout << "Hello User" << endl; 
    Sleep(3000); 
    while ((op != 1) && (tries < 4)) { 
     name = entName(name); 
     cout << "So your name is " << name << "?" << endl; 
     cout << "Enter '1' for YES or '2' for NO. "; 
     cin >> op; 
     if (op == 1) { 
      cout << "Perfect!"; 
     }   
     if (op == 2) { 
      cout << "Please Try Again!"; 
      tries+= 1; 
     } 
     if (tries == 4) { 
      //abort the program 
     } 
    } 
    int op2 = 0; 
    int tries2 = 0; 
    while ((op2 != 1) && (tries2 < 4)) { 
     op2 = 3; 
     age = entAge(); 
     cout << "So you are " << age << " years old?" << endl; 
     while ((op2 != 1) && (op2 != 2)) { 
      cout << "Enter '1' for YES or '2' for NO. "; 
      cin >> op2; 
      if (op2 == 1) { 
       cout << "Perfect!\n"; 
      } 
      if (op2 == 2) { 
       cout << "Please Try Again!\n"; 
       tries2++; 
      } 
      if (tries2 == 4) { 
       //abort the programhi 
      } 
     } 
} 

Вы забыли использовать знак = в нескольких местах. tries = 4 должен быть tries == 4 для сравнения переменных tries с цифровыми 4. tries = 4 переназначил переменную tries на четыре и ваш цикл while прекратил свое существование после его первого запуска. Кроме того, tries + 1 должен быть tries += 1 или tries++ для увеличения значения tries переменной на единицу.

Смежные вопросы