J'ai ce code C ++ et j'essaye de faire ce qui suit:

Invite l'utilisateur à entrer "p" pour jouer ou "q" pour quitter, si l'utilisateur entre quelque chose "p" le programme continuera, si l'utilisateur entre "q" le programme se terminerait et s'il a entré une entrée invalide, il prendrait également fin. Comment je fais ça?.

Merci,

Voici le code:

#include <iostream>
#include <cstdio>
#include <cmath>

using namespace std;

int Umain = 0;
double Atemp = 0;
double Utemp = 0;
double Working = 0;
double Total = 0;
char Answer = 'x';

void displayOverview ();

void playOrQuit();    

void promptNumber();

int main(){

    displayOverview();

    playOrQuit();

    promptNumber();

    return 0;
}

void displayOverview(){


}

void playOrQuit(){

    string playOrNot;

    cout << "If you want to play please press 'p' for play, and 'q' if you wish to quit\n";
    cin >> playOrNot;

    if(playOrNot == "p"){
        cout << "Awesome, lets start playing !!! \n";

    }if(playOrNot == "q"){
        cout << "Alright then, see you soon !!\n";

    }
}


void promptNumber(){

    do{
    cout << "Please Enter numbers between 1 and 12: ";
    cin >> Umain;
    cout << "\n";
        for (Utemp = Umain; Utemp > 0; Utemp--)
        {
            cout << "Please enter a number: ";
            cin >> Atemp;
            Working = (Working + Atemp);
        }
    }while (Answer == 'y');
}
c++
1
Epic Dehaan 21 nov. 2018 à 01:30

4 réponses

Meilleure réponse

Ajoutez simplement un appel à exit après avoir détecté que «q» a été pressé:

}if(playOrNot == "q"){
    cout << "Alright then, see you soon !!\n";
    exit(0); // <=== Add this here

Quitter avec un 0 signifie traditionnellement que le programme s'est terminé de la manière attendue et sans aucune erreur.

4
xaxxon 20 nov. 2018 à 22:37

La manière habituelle de faire ce genre de chose est d'avoir PlayOrQuit renvoyer un bool avec true signifiant "continuez à jouer" et false signifiant "quitter". Utilisez cette fonction pour contrôler une boucle:

while (PlayOrQuit()) {
    // game logic goes here
}

De cette façon, vous pouvez mettre n'importe quel code de nettoyage approprié après la boucle de jeu au lieu d'avoir une sortie de force brute depuis le bas à l'intérieur de la fonction.

3
Pete Becker 20 nov. 2018 à 22:56

Il existe plusieurs façons d'y parvenir. Mais je vous suggère d'inclure la bibliothèque stdlib.h et d'utiliser system ("exit") directement dans vos instructions else qui sont destinées à quitter le programme.

1
Beth 20 nov. 2018 à 22:42

Ajoutez end (), retournez 0 ou quittez (0). Utilisez votre cerveau comme, si vous en avez besoin, je me souviendrai de la chose la plus proche que vous avez repérée du passé.

Vous n'avez donc jamais commis ce genre d'erreur.

}if(playOrNot == "q"){
    cout << "Alright then, see you soon !!\n";
    exit(0);
}
0
Dusan Dusann 20 nov. 2018 à 23:58