Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
602 connectés 

  FORUM HardWare.fr
  Programmation
  C

  probleme avec while ...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

probleme avec while ...

n°678916
ombreee
Posté le 20-03-2004 à 18:40:25  profilanswer
 

Code :
  1. char choix    ;
  2.       int a,b,c      ;
  3.       while ((choix!='N')||(choix!='n'))
  4.         {
  5.         scanf("%d %d",&a,&b) ;
  6.           fflush(stdin) ;
  7. // operation(s),intructions... quelquonque ...
  8.         c = a + b  ;
  9.         printf("%d \n",c) ;
  10. //fin de boucle Question  
  11.         printf("Continuez ?? :" ) ;
  12.          
  13.                 scanf("%c",&choix) ;
  14.            fflush(stdin) ;
  15.          }


 
Voila un exemple et pourquoi le retour ne fonctionne pas ?????? Enfin le fin de boucle :/ quand je tape N ou n


Message édité par ombreee le 20-03-2004 à 19:17:05
mood
Publicité
Posté le 20-03-2004 à 18:40:25  profilanswer
 

n°678918
ombreee
Posté le 20-03-2004 à 18:44:06  profilanswer
 

Parcque la a la limite je peut faire ca avec if et break mais je trouve ca pas tres bon donc ...

n°678935
Taz
bisounours-codeur
Posté le 20-03-2004 à 19:04:14  profilanswer
 

fflush(stdin) ; -> ça ne sert à rien
 
 
après chaque printf sans \n suvi d'un scanf, tu insère un fflush(stdout) et pas stdin !

n°678941
ombreee
Posté le 20-03-2004 à 19:07:50  profilanswer
 

Daccord merci du conseil mais cela ne repond pas a ma reponse :/

n°678947
Taz
bisounours-codeur
Posté le 20-03-2004 à 19:14:26  profilanswer
 

ecoute, commence par faire ça, d'accord ? ensuite re-teste ton programme.

n°678949
ombreee
Posté le 20-03-2004 à 19:16:30  profilanswer
 

Deja fait ca ne change rien lol tu me prend pour qui ?? avec ou sans c'est pareil ,j'aurai pas poste sinon je t'aurai remercie de ton aide ....

n°678955
Taz
bisounours-codeur
Posté le 20-03-2004 à 19:22:34  profilanswer
 

ok, tu sais pourquoi ?
 
parce que quand tu tapes 134 , tu valide par Entrée, et ça fait un entier et le caractère \n ...
 
donc 2 solutions pour lire l'ordre de sortie:
  - lire toute la ligne (avec fgets)
  - vider les caractères disponible avant
    while(getchar()!='\n') { /* vide */ }  
    par exemple

n°678958
Taz
bisounours-codeur
Posté le 20-03-2004 à 19:24:02  profilanswer
 

ombreee a écrit :

Deja fait ca ne change rien lol tu me prend pour qui ?? avec ou sans c'est pareil ,j'aurai pas poste sinon je t'aurai remercie de ton aide ....
 

si ça change quelque chose
 
fflush(stdin); ne fais rien du tout du tout
 
et ton terminal est bufferisé en mode ligne, donc si tu fais un affichage qui se termine pas par un \n, t'es pas sur que ça s'affiche, donc si tu veux avoir à coup sur le prompt avant la saisie, tu ferais bien de prendre une bonne habitude

n°678961
ffluff
Challenge Everything
Posté le 20-03-2004 à 19:27:56  profilanswer
 

ombreee a écrit :

Code :
  1. char choix    ;
  2.       int a,b,c      ;
  3.       while ((choix!='N')||(choix!='n'))
  4.         {
  5.         scanf("%d %d",&a,&b) ;
  6.           fflush(stdin) ;
  7. // operation(s),intructions... quelquonque ...
  8.         c = a + b  ;
  9.         printf("%d \n",c) ;
  10. //fin de boucle Question  
  11.         printf("Continuez ?? :" ) ;
  12.          
  13.                 scanf("%c",&choix) ;
  14.            fflush(stdin) ;
  15.          }


 
Voila un exemple et pourquoi le retour ne fonctionne pas ?????? Enfin le fin de boucle :/ quand je tape N ou n


 :lol:  :lol:  
pour sortir du while il faut donc que choix=='N' et choix=='n' ...

n°678963
ombreee
Posté le 20-03-2004 à 19:31:34  profilanswer
 

Bin en fesant fflush stdin je vide le buffer clavier donc normalement au moment de la saisie du caractere c'est bon .non ?
en m aurais menti lol ?

mood
Publicité
Posté le 20-03-2004 à 19:31:34  profilanswer
 

n°678965
ombreee
Posté le 20-03-2004 à 19:33:49  profilanswer
 

fFluFf  
 
heu pourquoi Et? si je met et il faut absolument que choix doit etre == a N ET aussi a n donc pas trops possible ?
avec ou le caractere peut etre soit N soit n ...
 
les portes logique avec && c'est dans le seul cas ou les deux sont vrai! alors qu avec ou une doit etre juste vrai pour quitter la boucle


Message édité par ombreee le 20-03-2004 à 19:36:00
n°678966
Taz
bisounours-codeur
Posté le 20-03-2004 à 19:35:50  profilanswer
 

ombreee a écrit :

Bin en fesant fflush stdin je vide le buffer clavier donc normalement au moment de la saisie du caractere c'est bon .non ?
en m aurais menti lol ?

oui

n°678968
ombreee
Posté le 20-03-2004 à 19:38:05  profilanswer
 

lol (je vais engeuler mon prof moi)
 

n°678969
ffluff
Challenge Everything
Posté le 20-03-2004 à 19:41:01  profilanswer
 

ombreee a écrit :

fFluFf  
 
heu pourquoi Et? si je met et il faut absolument que choix doit etre == a N ET aussi a n donc pas trops possible ?
avec ou le caractere peut etre soit N soit n ...
 
les portes logique avec && c'est dans le seul cas ou les deux sont vrai! alors qu avec ou une doit etre juste vrai pour quitter la boucle  


while((choix != 'N') || (choix != 'n'))
{
}
si choix vaut 'N' alors (choix !='n') est vrai donc il rentre dans le while
si choix vaut 'n' alors (choix !='N') est vrai donc il rentre dans le while
 
je te conseil :
char continue= 'o';
while(continue=='o' || continue=='O')
{
}
la tant que l'utilisateur reponds o ou O a ta question il continue.

n°678970
Taz
bisounours-codeur
Posté le 20-03-2004 à 19:42:31  profilanswer
 

ou de faire un do while cupède :o

n°678972
joce
Architecte / Développeur principal
"BugHunter"
Posté le 20-03-2004 à 19:45:15  profilanswer
 

ombreee a écrit :

fFluFf  
 
heu pourquoi Et? si je met et il faut absolument que choix doit etre == a N ET aussi a n donc pas trops possible ?
avec ou le caractere peut etre soit N soit n ...
 
les portes logique avec && c'est dans le seul cas ou les deux sont vrai! alors qu avec ou une doit etre juste vrai pour quitter la boucle  

Parce que si tu réponds "n" choix!='N' est vrai donc ca continue la boucle, idem pour "N" choix!='n' est vrai.
tandis que si tu mets un && ca marche :)

n°678973
ffluff
Challenge Everything
Posté le 20-03-2004 à 19:45:41  profilanswer
 

aussi, mais bon si il arrive pas à écrire une conditions d'un while :/

n°678974
Taz
bisounours-codeur
Posté le 20-03-2004 à 19:46:43  profilanswer
 

joce a écrit :

Parce que si tu réponds "n" choix!='N' est vrai donc ca continue la boucle, idem pour "N" choix!='n' est vrai.
tandis que si tu mets un && ca marche :)

[:roi]

n°678975
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 20-03-2004 à 19:46:49  profilanswer
 

ombreee a écrit :

Bin en fesant fflush stdin je vide le buffer clavier donc normalement au moment de la saisie du caractere c'est bon .non ?
en m aurais menti lol ?


le fflush(stdin) n'a aucun sens, on ne peut flusher que des buffers de sortie, pas des buffers d'entrée.
encore un bel exemple de prof incompétent


---------------
J'ai un string dans l'array (Paris Hilton)
n°678981
ombreee
Posté le 20-03-2004 à 20:02:22  profilanswer
 

Oui j'aurai du prendre 1 un && c'etait ca le probleme lol now ca fonctionne ;)


Message édité par ombreee le 20-03-2004 à 20:03:57
n°678982
Taz
bisounours-codeur
Posté le 20-03-2004 à 20:03:56  profilanswer
 

t'en vas pas utiliser le  ^ binaire :o

n°678984
ombreee
Posté le 20-03-2004 à 20:04:17  profilanswer
 

taz non non tkt lol

n°678985
Taz
bisounours-codeur
Posté le 20-03-2004 à 20:06:14  profilanswer
 

alors tu vas faire comment ?  
 
edit: je vois toute façon pas le rapport


Message édité par Taz le 20-03-2004 à 20:07:10
n°678988
ombreee
Posté le 20-03-2004 à 20:09:05  profilanswer
 

J'ai modifie certainnes de mes boucles par && tout simplement je me suis gourre de signe logique merci pour ton aide et surtout celui de joce.
 
   

n°678989
joce
Architecte / Développeur principal
"BugHunter"
Posté le 20-03-2004 à 20:12:32  profilanswer
 

surtout fFluFf en fait :)

n°678994
ombreee
Posté le 20-03-2004 à 20:17:53  profilanswer
 

Oui j'ai oubliee lol
 
C'est bete le C par contre tu te gourre sur un truc apres ta trops du mal de voir ton erreur meme simple lol ^^

n°678995
Taz
bisounours-codeur
Posté le 20-03-2004 à 20:19:20  profilanswer
 

c'est pas le C qui est bête

n°678998
ombreee
Posté le 20-03-2004 à 20:27:21  profilanswer
 

Taz  
Quel insinuation lol ^^ tu ma pas compris ,je voulais dire que le C n'est pas "compliquer".Je trouve que le C C++ est vraiment un bon language , mieu que visual par exemple.

n°679001
HappyHarry
Posté le 20-03-2004 à 20:42:32  profilanswer
 

[:mlc]

n°679003
matafan
Posté le 20-03-2004 à 20:43:54  profilanswer
 

Si ça peut t'aider a ne pas refaire ce genre d'erreur, sache que non(A et B) <=> non(A) ou non(B), et que non(A ou B) <=> non(A) et non(B).

n°679004
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 20-03-2004 à 20:52:49  profilanswer
 

ombreee a écrit :

Taz  
Quel insinuation lol ^^ tu ma pas compris ,je voulais dire que le C n'est pas "compliquer".Je trouve que le C C++ est vraiment un bon language , mieu que visual par exemple.


tu confondrais pas langage et IDE toi ? [:heink]


---------------
J'ai un string dans l'array (Paris Hilton)
n°679012
ombreee
Posté le 20-03-2004 à 21:11:03  profilanswer
 

Ouais je voulais dire pascal ( se sent pas bien aujourd'hui) ..

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  probleme avec while ...

 

Sujets relatifs
Probleme à l'affichage d'une requeteProbleme de table sous Power AMC! Help
Problème Java MySQLProbleme de compilation
Probleme pour supprimer une valeur dans ma bdd[CVS] Problème lors d'un checkout
probleme d'install avec pygtk sous windows.Problème de lecture de fichier avec java
[PHP] Problème avec un WHILE :(Probleme While, $i et variable
Plus de sujets relatifs à : probleme avec while ...


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR