Problème de boucle
gl111
Messages postés
5
Statut
Membre
-
Dalfab Messages postés 720 Statut Membre -
Dalfab Messages postés 720 Statut Membre -
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
- Boucle excel sans macro - Forum Excel
- Mon pc s'allume et s'éteint en boucle ✓ - Forum Matériel & Système
- Smart tv qui s'allume et s'éteint en boucle - Forum Téléviseurs
- Xiaomi s'éteint tout seul et se rallume en boucle - Forum Xiaomi
- Vlc lecture en boucle ✓ - Forum Lecteurs et supports vidéo
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;
}