"cin" marche pas !

"cin" marche pas ! - C++ - Programmation

Marsh Posté le 12-01-2008 à 15:04:17    

bonjour,
je débute en C++ et me voilà confronté à un problème.
 

Code :
  1. int main()
  2. {
  3. int choix = 0;
  4. do
  5. {
  6.  cout << "LOUL - Que veux-tu faire mon brave ?" << endl ;
  7.  cin >> choix ;
  8.  switch (choix)
  9.  {
  10.   case 1: choix=1 ; break ;
  11.   case 2: choix=2 ; break ;
  12.   case 3: choix=3 ; break ;
  13.   default: system("cls" ) ; cout << "Espece de couillon ça t'amuses d'écrire n'importe quoi ??" << endl ; break ;
  14.  }
  15. }
  16. while (choix!=1 || choix!=2 || choix!=3);
  17. system("PAUSE" ) ;
  18. return 0 ;
  19. }


 
ce que je fais c'est un menu, on peut choisir l'option 1, 2 ou 3 mais je veux qu'il soit réaffiché si on tape autre chose. le problème c'est qu'une fois que j'ai tapé une valeur autre que 1, 2 ou 3 le programme part dans une boucle infinie, il réaffiche sans cesse le texte comme si je continuais a taper une mauvaise valeur, le CIN n'a plus aucun effet quoi ! (il marche que la 1ere fois, après il fait plus rien...)
 
comment faire ??


Message édité par xphanoo le 12-01-2008 à 15:10:29
Reply

Marsh Posté le 12-01-2008 à 15:04:17   

Reply

Marsh Posté le 12-01-2008 à 15:18:37    

Reply

Marsh Posté le 12-01-2008 à 15:24:03    

Citation :

"cin" marche pas !

Je ne sais pas faire marcher cin [:aloy]
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 12-01-2008 à 16:11:56    

salut.
Pour commencer OPTIMISE TES PROGRAMMES!!!!
Pourquoi tu utilise un switch ?????
 

Code :
  1. #include <iostream>
  2. using namesapce std;
  3. int main()
  4. {
  5. int choix = 0;
  6.   while (choix >3  || choix <1) //pas besion du do...while
  7.   {
  8.    cout << "LOUL - Que veux-tu faire mon brave ?" << endl ;
  9.    cin   >> choix ;
  10.   } 
  11. system("PAUSE" ) ;
  12. return EXIT_SUCCESS ;
  13. }


Si ca marche pas, c'est ton pc.
Et puis avant d'ecrire des horreur sur le forum apprends le C++...
 

Reply

Marsh Posté le 12-01-2008 à 17:15:37    

je vais tester cin.clear() comme indiqué dans le lien de Ace17  ;) (merci à lui)
 
juloss4 j'utilise le switch car selon la réponse qu'on aura donné, le programme se déroulera de façon différente: pour 1 le jeu se lance, pour 2 on accède a un sous-menu et pour 3 le programme se quitte  ;)


Message édité par xphanoo le 12-01-2008 à 17:18:40
Reply

Marsh Posté le 12-01-2008 à 18:37:39    

et switch ca n'a jamasi été un bottleneck hein [:dawa]

Reply

Marsh Posté le 13-01-2008 à 01:02:27    

et que pensez vous du goto ?
parce que dans mon prog j'aurais souvent besoin de faire des retour en arrière dans le code... ça me parait plus simple avec des goto qu'avec des boucles imbriquées...

Reply

Marsh Posté le 13-01-2008 à 10:05:33    

xphanoo a écrit :

et que pensez vous du goto ?
parce que dans mon prog j'aurais souvent besoin de faire des retour en arrière dans le code... ça me parait plus simple avec des goto qu'avec des boucles imbriquées...


C'est un blague? [:mlc]
http://en.wikipedia.org/wiki/GOTO# [...] goto_usage
Mais rien ne vaut l'experience, si tu es sur un projet perso, tu peux t'amuser a le farcir de gotos... et tu vas comprendre!
 

Reply

Marsh Posté le 13-01-2008 à 17:24:45    

each time you sue a goto, god kills a kitten :o

Reply

Marsh Posté le 14-01-2008 à 09:43:08    

Ace17 a écrit :


C'est un blague? [:mlc]
http://en.wikipedia.org/wiki/GOTO# [...] goto_usage
Mais rien ne vaut l'experience, si tu es sur un projet perso, tu peux t'amuser a le farcir de gotos... et tu vas comprendre!
 


En C++, c'est difficile de trouver un usage, en C c'est extrêment pratique. Il faut pas avoir de tabou sur les goto.


Message édité par Taz le 14-01-2008 à 09:43:27
Reply

Marsh Posté le 14-01-2008 à 09:43:08   

Reply

Marsh Posté le 15-01-2008 à 19:18:19    

Les seuls cas ou j'utilise des goto utiles en C, c'est quand j'optimise a la pogne des automates d'état fini. Un contexte assez particulier.
Je suppose qu'il y a d'autres cas spécifiques, mais bon, ca court pas les rues.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 16-01-2008 à 08:51:04    

gilou a écrit :

Les seuls cas ou j'utilise des goto utiles en C, c'est quand j'optimise a la pogne des automates d'état fini. Un contexte assez particulier.
Je suppose qu'il y a d'autres cas spécifiques, mais bon, ca court pas les rues.
A+,


on dévie à parler de C, mais dans du bon code C, tu en trouves très facilement pour faire de la gestion d'erreur.

Reply

Marsh Posté le 31-01-2008 à 21:53:55    

bon j'ai finis par trouver la solution a mon probleme de cin.
quand on utilise cin dans une boucle a la fin il faut vider le buffer en faisant cin.sync(), et là marche nickel

Reply

Marsh Posté le 01-02-2008 à 09:18:20    

xphanoo a écrit :

bon j'ai finis par trouver la solution a mon probleme de cin.
quand on utilise cin dans une boucle a la fin il faut vider le buffer en faisant cin.sync(), et là marche nickel


Non ça ne marche pas.
 
Il faut tester le retour de ton opération:
 

Code :
  1. if(cin >> choix) { ok c'est bon } else { erreur de lecture }


 
Personne n'a jamais eu à utiliser sync qui a juste un effet fortuit pour toi.

Reply

Marsh Posté le 01-02-2008 à 11:52:22    

on se fait un petit fight iostream / istream / ostream ?

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed