2017-05-08 1 views
-6

Dans le code ci-dessous l'utilisateur entrera 1 ou 2 ou 3 et il sera pris par getch et après que le programme entrera pour passer .... mais j'ai un problème après l'application de tout cas de commutateur que je veux rendre le programme au début si l'utilisateur appuie sur une touche?COMMENT retourner au début si l'utilisateur appuie sur une touche sauf 1 ou 2 ou 3?

la langue c est encore nouveau pour moi, donc il sera grand si vous expliquez dans façon simple

#include <stdio.h> 
#include <unistd.h> 
#include <stdlib.h> 
#include <math.h> 
#include <conio.h> 

int main(void) { 
    char L; 

    while (1) { 
     L = getch(); 

     switch (L) { 
     case '1': 
      system("cls"); 
      printf("111111111111111"); 
      break; 
     case '2': 
      system("cls"); 
      printf("222222222222222"); 
      break; 
     case '3': 
      system("cls"); 
      printf("33333333"); 
      break; 
     default: 
      sleep(0); 
     } 
    } 

    return 0; 
} 
+1

Indentation .......................... – ThingyWotsit

+1

Veuillez modifier la question et indenter votre code. – Lundin

+0

Veuillez modifier la question et indenter votre code. Comme c'est maintenant, il est difficile de comprendre ce que vous voulez! – 23ars

Répondre

1

utilisation do - while boucle et définir la condition de while(L != '1' && L != '2' && L != '3');:

do { 
    L = getch(); 
    switch (L) { 
    case '1' : 
     system("cls"); 
     printf("111111111111111"); 
     break; 
    case '2' : 
     system("cls"); 
     printf("222222222222222"); 
     break; 
    case '3' : 
     system("cls"); 
     printf("33333333"); 
     break; 
    default : 
     sleep(0); 
    } 
} while(L != '1' && L != '2' && L != '3'); 

Le code ci-dessus vous demandera des données d'abord, puis l'évaluer et continuer ces jusqu'à l'utilisateur entre '1', '2' ou '3' .


Comme commentaires ci-dessous mentionnent l'default cas sleep(0) n'a pas utilisé mais il peut être amélioré par exemple comme suit:

do { 
    L = getch(); 
    switch (L) { 
    case '1' : 
     system("cls"); 
     printf("111111111111111"); 
     break; 
    case '2' : 
     system("cls"); 
     printf("222222222222222"); 
     break; 
    case '3' : 
     system("cls"); 
     printf("33333333"); 
     break; 
    default : 
     L = 0; 
    } 
} while(!L); 

Dans cet exemple, vous ne devez pas vérifier les valeurs autorisées (en supposant que vous ne voulez pas utiliser le cas lorsque L == 0). Comme le titre de votre question est un peu trompeur, je n'ai peut-être pas compris ce que vous aimez réaliser. Si vous voulez juste de suspendre revenir au début de la boucle, vous pouvez ajouter un montant supplémentaire getch() après le switch bloc:

while (1) { 
    L = getch(); 

    switch (L) { 
    case '1': 
     system("cls"); 
     printf("111111111111111"); 
     break; 
    case '2': 
     system("cls"); 
     printf("222222222222222"); 
     break; 
    case '3': 
     system("cls"); 
     printf("33333333"); 
     break; 
    } 

    printf("Press Any Key to Continue..."); 
    getch(); 
} 

Si cela ne répond pas à votre question, je vous recommande de l'améliorer.

+1

Je suis curieux de connaître la raison de downvote. – Akira

+0

Quelle est la raison du 'sommeil (0)'? (BTW I mis à jour). –

+0

@MichaelWalz Juste copié de la question et ne l'a pas considéré. – Akira

1

Vous pouvez envelopper l'interrupteur cas avec une boucle while. Par exemple:

int done = 0; 
while(!done) { 
    L = getch(); 
    switch (L) { 
    case '1' : 
     system("cls"); 
     printf("111111111111111"); 
     done = 1; 
     break; 
    case '2' : 
     system("cls"); 
     printf("222222222222222"); 
     done = 1; 
     break; 
    case '3' : 
     system("cls"); 
     printf("33333333"); 
     done = 1; 
     break; 
    default : 
     sleep(0); 
    } 
} 
+1

Pourquoi la downvote? –

+0

cela ne fonctionne pas je veux après tout cas est appliqué si l'utilisateur appuie sur une touche le programme va revenir au début ... –

+0

@martenmarteny Vous avez intitulé votre question comme le programme revenir au début si l'utilisateur appuie sur une touche * * sauf ** pour 1, 2 ou 3. Mais on dirait que vous voulez quelque chose de beaucoup plus facile et différent. Si vous souhaitez revenir en arrière après une pression sur une touche, il vous suffit d'ajouter un 'getch()' à la fin de votre boucle while. – Akira