2015-11-19 5 views
-5
while (wrongGuess != 6) 
    { 
     cout << "\nEnter a letter to guess: "; 
     cin >> wrongGuess; 
     wrongGuess = toupper(wrongGuess); 
     cout << "You guessed the letter: " << wrongGuess << endl; 

     for (int i = 0; i < fileWord.length(); i++) 
     { 
      if (fileWord[i] == wrongGuess) 
      { 
       cout << wrongGuess << " is in the letter to guess." <<  endl; 
      found = true; 
     } 

    } 
    // if not found - increment wrong guesses 
    if (!found) 
    { 
     wrongGuess++; 
     cout << wrongGuess << " is not in the word to guess." << endl; 
    } 
    //print the board that corresponds to the wrongGuess 

} 

первая часть цикла while работает, она отображает «находится в слове, чтобы угадать». Однако, когда я ввожу неправильную букву, она не отображает «не в словах, чтобы угадать», вместо этого она отображает «Вы догадались о письме». Что не так с моей логикой?В то время как цикл в программе палача C++

+0

Ваша программа делает именно то, что вы рассказываете его: (1) побуждение "Введите букву угадать:", (2) читать письмо ('CIN >> wrongGuess'), (3) преобразование догадка в верхний регистр, затем (4) печать «Вы догадались письмо: ...». Не знаете, почему вы ожидаете, что это будет по-другому. Вы можете уточнить? – lurker

+0

Мне нужна программа, чтобы сказать мне, правильно ли угаданное письмо или нет. когда я ввожу правильную букву, она говорит мне, что буква находится в слове, когда я ввожу неверное, это не говорит мне, что письмо не в слове, а, похоже, возвращается к началу и дает мне сообщение " вы угадали письмо: « – ladysquatch

+0

Прежде всего, какой тип данных является вашей неправильной переменной? Кажется, вы оба используете его как символ и как целое число. – MrSykkox

ответ

1

Вы используете wrongGuess как вход от пользователя, а также счетчик для неправильных догадок ... Кроме того, я не знаю, какие типы wrongGuess и fileWord, но я предполагаю, что вы сравниваете int с символом, который может не дать ожидаемого результата.

0

Я еще не протестировал этот код, но он должен установить, как вы правильно настроите свою программу.

int guessedLetters = 0; 
int guessLeft = 5; 
while (guessLeft < 0 || guessedLetters == fileWord.length()) 
{ 
    char guessInput; 
    cout << "\nEnter a letter to guess: "; 
    cin >> guessInput; 
    guessInput = toupper(guessInput); 
    cout << "You guessed the letter: " << guessInput<< endl; 

    for (int i = 0; i < fileWord.length(); i++) 
    { 
     if (fileWord[i] == guessInput) 
     { 
      cout << wrongGuess << " is in the letter to guess." <<  endl; 
      guessedLetters++; 
      found = true; 
     } 
    } 
    // if not found - increment wrong guesses 
    if (!found) 
    { 
     guessLeft--; 
     cout << guessInput << " is not in the word to guess." << endl; 
    } 
    //print the board that corresponds to the wrongGuess 

} 
0

Я думаю, вам понадобится другая переменная, вы используете wrongGuess для управления временем и чтения ввода от пользователя.

Не знаю, но попробуйте это.

int count = 0; 
while (count != 6) 
{ 
    cout << "\nEnter a letter to guess: "; 
    cin >> wrongGuess; 
    wrongGuess = toupper(wrongGuess); 
    cout << "You guessed the letter: " << wrongGuess << endl; 

    for (int i = 0; i < fileWord.length(); i++) 
    { 
     if (fileWord[i] == wrongGuess) 
     { 
      cout << wrongGuess << " is in the letter to guess." << endl; 
      found = true; 
     } 

    } 
// if not found - increment wrong guesses 
if (!found) 
{ 
    count++; 
    cout << wrongGuess << " is not in the word to guess." << endl; 
} 
//print the board that corresponds to the wrongGuess 
} 
Смежные вопросы