-1
votes

C ++: ma boucle de cas de commutation va au premier cas

Je suis nouveau à C ++ alors je suis désolé pour mon manque de connaissances. Quoi qu'il en soit, j'essaie de retourner au menu après que je sache avec un cas.

Utilisation actuellement en utilisant un do-en attendant le "redémarrage" de BOOL pour changer de faux. P>

do {
    switch (wahl) {
        case 1:
            std::cout << "Bitte geben Sie den Grundwert ein: ";
            std::cin.clear();
            std::cin >> grund_eingabe;
            std::cout << "\nBitte geben Sie den Prozentsatz (%) ein: ";
            std::cin.clear();
            std::cin >> przsatz_eingabe;
            std::cout << "Der Prozentwert lautet: " + std::to_string(prozentwert_berechnen(grund_eingabe, przsatz_eingabe)) + "\n";
            break;
            
        case 2:
            std::cout << "Bitte geben Sie den Grundwert (Gesamtanzahl) ein: ";
            std::cin.clear();
            std::cin >> grund_eingabe;
            std::cout << "\nBitte geben Sie den Prozentwert ein: ";
            std::cin.clear();
            std::cin >> przwert_eingabe;
            std::cout << "Der Prozentsatz lautet: " + std::to_string(prozentsatz_berechnen(grund_eingabe, przwert_eingabe)) + "\n";
            
            
        case 3:
            std::cout << "Bitte geben Sie den Prozentsatz (%) ein: ";
            std::cin.clear();
            std::cin >> przsatz_eingabe;
            std::cout << "\nBitte geben Sie den Prozentwert ein: ";
            std::cin.clear();
            std::cin >> przwert_eingabe;
            std::cout << "Der Grundwert lautet: " + std::to_string(grundwert_berechnen(przsatz_eingabe, przwert_eingabe)) + "\n";
            
        case 4:
            neustart = false;
            return 0;
        default:
            break;
    }
} while (neustart != false);


6 commentaires

Si wahl ne change pas, alors commutateur (wahl) va toujours sur le même cas .


Quelle est la valeur de la variable wahl avant la boucle? La variable wahl n'est jamais changée, au moins avoir une STD :: CIN pour la variable WAHL au début ou à la fin de la boucle afin que le commutateur ait du sens.


Dans Case 4 , Puis-je effacer la console et afficher à nouveau le menu et demander une entrée wahl ? Ne devrait-il pas travailler


Vous devriez demander à chaque itération de la boucle sinon vous ne pouvez jamais sortir de la boucle


D'ailleurs. Si vous revenez 0, vous n'avez même pas besoin de définir le Neustart sur TRUE ... Le retour quittera la boucle ainsi que la fonction où il est dans


Ah a du sens maintenant, je viens de prolonger la part du menu, merci!


4 Réponses :


0
votes

Lorsque vous avez terminé avec le boîtier 1, il se réchauffe dans le boîtier 1 et pas le menu.

Oui, c'est exactement ce que vous avez écrit. Lorsque le commutateur est terminé et Neustart! = False , le programme se réchauffe sur le commutateur sans changer wahl . Si vous souhaitez revenir au menu, vous devez inclure le menu de la boucle DO-While.


2 commentaires

Fonctionne comme un charme, j'étais sur le point de commencer à faire des boucles, etc. Mais c'est vraiment plus simple, merci!


@Clark je suis heureux d'avoir aidé! Si moi, ou quelqu'un d'autre, pourrait résoudre votre problème, ce serait bien si vous accepté la réponse correspondante (✓ ). Voir aussi Que dois-je faire quand quelqu'un répond à ma question?



1
votes

Vous passez la valeur wahl dans l'instruction de commutation, mais vous n'avez jamais essayé de demander à l'utilisateur d'obtenir une entrée, de sorte que ne jamais être changée et bouclée pour toujours.

Vous pouvez essayer: < / p> xxx


0 commentaires

0
votes

Modification la plus simple: xxx


0 commentaires

0
votes

Parce que vous n'avez jamais demandé à l'utilisateur d'entrer une nouvelle valeur une fois que la boucle a démarré, chaque fois que la boucle redémarre la valeur de la WAH1 est toujours la dernière que vous avez entrée avant de démarrer la boucle.

do{
   std::cout<<"Enter another option:";
   std::cin>>wah1;
   switch(wah1){


0 commentaires