Вызов функции в операторе switch.

0

Эй, ребята, я пытаюсь понять, как вызвать функцию в моем коде, используя оператор switch. Я попытался найти много разных ссылок, но неважно, что ничто не сработает, если кто-то может направить меня на правильный путь, который будет большой помощью. Здесь код:

#include <iostream>
#include <string>

using namespace std;

int playGame(string word); 

int main() 
{
int choice;
bool menu = true;
do{
cout <<"Please select one of the following options:  \n";

cout << "1: Play\n"
    "2: Help\n"
    "3: Config\n"
    "4: Quit\n";

cout << "Enter your selection (1, 2 and 3): ";
cin >> choice;
//*****************************************************************************
// Switch menu to display the menu.
//*****************************************************************************
    switch (choice)
 {
      case 1:
        cout << "You have chosen play\n";
        int playGame(string word); 
        break;
     case 2:
        cout << "You have chosen help\n";
        cout << "Here is a description of the game Hangman and how it is    played:\nThe      word to guess is represented by a row of dashes, giving the number of letters, numbers and category. If the guessing player suggests a letter or number which occurs in the word, the other player writes it in all its correct positions";
        break; 
         case 3:
        cout << "You have chosen Quit, Goodbye.";
        break;
    default:
        cout<< "Your selection must be between 1 and 3!\n";

    }

}while(choice!=3);    
getchar();
getchar();


cout << "You missed " << playGame("programming");
cout << " times to guess the word programming." << endl;
}






int playGame(string word) //returns # of misses

{
    //keep track of misses
    //guess is incorrect
    //repeated guess of same character
    //guess is correct 

    int misses = 0;
    int exposed = 0; 
    string display = word;
    for(int i=0; i< display.length(); i++)
        display[i] ='*';


    while(exposed < word.length()) {
        cout << "Miss:" << misses << ":";
        cout << "Enter a letter in word ";
        cout << display << " : ";
        char response;
        cin >> response; 

        bool goodGuess = false; 
        bool duplicate = false;
        for(int i=0 ; i<word.length() ; i++) 
            if (response == word[i]) 
            if (display[i] == word[i]) {
                cout << response << " is already in the word.\n";
                duplicate = true; 
                break;
            } else {
                display[i] = word[i];
                exposed++; 
                goodGuess = true; 
            }
            if (duplicate)
                continue;

            if (!goodGuess){
                misses ++;
            cout << response << " is not in the word.\n";

            }
    }
    cout << "Yes, word was " << word << "." << endl;
    return misses;
}
Теги:

2 ответа

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

Вы не вызываете функцию playGame в инструкции switch,

switch (choice)
 {
      case 1:
        cout << "You have chosen play\n";
        //int playGame(string word); // this does not call playGame,  
                                     // it re-declare playGame function again
        playGame("word");              // this will call playGame with word parameter
      //^^^^^^^^^^^^^^^
        break;
  • 0
    Я продолжаю получать playGame (слово); Слово кажется неопределенным?
  • 0
    Слово не определено, потому что исходный код не объявлял переменную word . Вам нужно поставить эту playGame («слово»);
Показать ещё 3 комментария
0
int playGame(string word);

В вашем операторе switch может возникнуть проблема... попробуйте:

int misses = playGame(word);

Вы пытаетесь вернуть количество пропусков из вашего метода playGame, поэтому вам нужно поместить возвращаемые данные внутри переменной.

Ещё вопросы

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