2009-08-22 11 views
-2

je l'ai fait un programme qui nécessite les éléments suivants:C++ retour si une entrée invalide

  1. invites ne compte entrée utilisateur
  2. invites type de compte d'entrée utilisateur
    1. si le compte type == a, demande une entrée et fait une certaine formule [si]
    2. si le compte type == b, demande une entrée et une autre formule ne [else if]
    3. si type de compte est erroné (pas ou b), les invites erreur et revenir à 2 [autre]
  3. invites entrée utilisateur pour quitter [faire en]
    1. si input == y, sorties
    2. si input == n, retournez à 1

au moment où je suis assez coincé à 2.3. il provoque l'erreur et passe à 3 au lieu de retourner à 2 pour demander l'entrée de l'utilisateur.

où est le problème? l'autre?

+2

Le diable est dans les détails! S'il vous plaît montrer le code réel que vous avez jusqu'à présent. –

+0

Je voudrais vraiment suggérer l'instruction 'goto': P –

Répondre

2

Vous devez utiliser une boucle pour continuer à demander un type de compte si le type est erroné:

do 
{ 
    //1 
    do 
    { 
     //2 
     if (type =="a") 
      //2.1 
     else if(type=="b") 
      //2.2 
     else 
      //2.3 
    } 
    while (type != "a" and type != "b"); 
    //3 
    if(input == "y") 
     return; 
} 
while (input == "n"); 
2

Sans voir de code, il est impossible de dire ce qui ne va pas dans votre tentative. Cependant quelque chose comme cela devrait fonctionner

// ... 
string atype; 
while(atype != "a" && atype != "b") { 
    cin >> atype; 
    if(atype == "a") { 
    // 2.1 
    } else if(atype == "b") { 
    // 2.2 
    } else { 
    cout << "wrong input" << endl; 
    } 
} 
// ... 
0

Si vous devez faire un peu de travail quand chaque cas se produit et que vous souhaitez éviter le « goto » (que vous devriez probablement), je vous suggère de diviser le 1), 2) et 3) se décomposent en trois fonctions distinctes.

Si le truc que vous devriez faire est vraiment trivial, je suggère une solution similaire à celle publiée par sepp2k. Cependant, je voudrais ajuster la boucle while à une boucle do-while (vous ne devriez pas tester l'atype au début de la boucle car techniquement, il n'est pas initialisé).

Questions connexes