Problème de boucle
gl111
Messages postés
4
Date d'inscription
Statut
Membre
Dernière intervention
-
Dalfab Messages postés 706 Date d'inscription Statut Membre Dernière intervention -
Dalfab Messages postés 706 Date d'inscription Statut Membre Dernière intervention -
Bonjour j'ai écrit ce code :
le problème avec ce code quand je l’exécute, je peux rentrer ma chaîne de caractère mais une fois que le code m'affiche le résultat qui est correct il devrait m'afficher " Press [ENTER] to close the terminal... " mais il me l'affiche pas et je comprends pas pourquoi!
Si quelqu'un à une idée ca serait super cool!!
using namespace std; enum class Etapes {ETAT_INITIAL, LECTURE_PREMIER_NOMBRE, FIN_LECTURE, LECTURE_NOMBRE_SUIVANT}; int premier,second,conversionChar,k(1),z(1),h; int main() { int etat(0); char next; bool fin(false); cout << "Enter a line of input:\n"; cin.get(next); while (!fin) { switch ((Etapes) (etat)) { case Etapes::ETAT_INITIAL : { if(isspace(next)){break;} else {etat = 1;} } case Etapes::LECTURE_PREMIER_NOMBRE : { if( next == '\n'){fin=true; break;} if(isspace(next)){ h=second; cout<<h<<" "; etat=2; } second = second *10; conversionChar = (int) next - 48; second += conversionChar; break; } case Etapes::FIN_LECTURE : { if( next == '\n'){fin=true;} if(isspace(next)){break;} etat = 3; } case Etapes::LECTURE_NOMBRE_SUIVANT : { // if( next == '\n'){fin=true;} while(not isspace(next)){ premier = premier *10; conversionChar = (int) next - 48; premier += conversionChar; cin.get(next); } cout<<premier<<" "; premier=0; etat = 2; break; } default : fin=true; } cin.get(next); } system("PAUSE"); return EXIT_SUCCESS; }
le problème avec ce code quand je l’exécute, je peux rentrer ma chaîne de caractère mais une fois que le code m'affiche le résultat qui est correct il devrait m'afficher " Press [ENTER] to close the terminal... " mais il me l'affiche pas et je comprends pas pourquoi!
Si quelqu'un à une idée ca serait super cool!!
EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI Merci d'y penser dans tes prochains messages. |
A voir également:
- Problème de boucle
- Xiaomi s'éteint tout seul et se rallume en boucle - Forum Xiaomi
- Boucle excel sans macro - Forum Excel
- Mon pc s'allume et s'éteint en boucle ✓ - Forum Matériel & Système
- Vlc lire en boucle ✓ - Forum Lecteurs et supports vidéo
- Problème xiaomi redmi note 8t s'allume et s'éteint vibre - Forum Xiaomi
1 réponse
Bonjour,
Si le but est d'écrire l'extraction de 2 nombres de la manière la plus compliquée possible, tu as réussi car la relecture de ce code est quasi-impossible.
Les enum sont faits pour améliorer la lisibilité et non l'inverse.
Tu as dû utiliser un debuggeur pour écrire cela, en examinant la variable fin elle reste toujours à false, donc on ne sort pas de la boucle.
Entre les labels de switch, il faut mettre des break à moins d'être un expert. Penses-y.
J'aurai écris un code plus court
Si le but est d'écrire l'extraction de 2 nombres de la manière la plus compliquée possible, tu as réussi car la relecture de ce code est quasi-impossible.
Les enum sont faits pour améliorer la lisibilité et non l'inverse.
Tu as dû utiliser un debuggeur pour écrire cela, en examinant la variable fin elle reste toujours à false, donc on ne sort pas de la boucle.
Entre les labels de switch, il faut mettre des break à moins d'être un expert. Penses-y.
J'aurai écris un code plus court
int main() { int premier, second; std::cout << "Enter a line of input:\n"; std::cin >> premier >> second; std::cout << premier << " " << second; }