probleme avec while ... - C - Programmation
Marsh Posté le 20-03-2004 à 18:44:06
Parcque la a la limite je peut faire ca avec if et break mais je trouve ca pas tres bon donc ...
Marsh Posté le 20-03-2004 à 19:04:14
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 !
Marsh Posté le 20-03-2004 à 19:07:50
Daccord merci du conseil mais cela ne repond pas a ma reponse
Marsh Posté le 20-03-2004 à 19:14:26
ecoute, commence par faire ça, d'accord ? ensuite re-teste ton programme.
Marsh Posté le 20-03-2004 à 19:16:30
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 ....
Marsh Posté le 20-03-2004 à 19:22:34
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
Marsh Posté le 20-03-2004 à 19:24:02
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
Marsh Posté le 20-03-2004 à 19:27:56
ombreee a écrit :
|
pour sortir du while il faut donc que choix=='N' et choix=='n' ...
Marsh Posté le 20-03-2004 à 19:31:34
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 ?
Marsh Posté le 20-03-2004 à 19:33:49
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
Marsh Posté le 20-03-2004 à 19:35:50
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 ? |
oui
Marsh Posté le 20-03-2004 à 19:41:01
ombreee a écrit : fFluFf |
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.
Marsh Posté le 20-03-2004 à 19:45:15
ombreee a écrit : fFluFf |
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
Marsh Posté le 20-03-2004 à 19:45:41
aussi, mais bon si il arrive pas à écrire une conditions d'un while
Marsh Posté le 20-03-2004 à 19:46:43
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. |
Marsh Posté le 20-03-2004 à 19:46:49
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 ? |
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
Marsh Posté le 20-03-2004 à 20:02:22
Oui j'aurai du prendre 1 un && c'etait ca le probleme lol now ca fonctionne
Marsh Posté le 20-03-2004 à 20:06:14
alors tu vas faire comment ?
edit: je vois toute façon pas le rapport
Marsh Posté le 20-03-2004 à 20:09:05
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.
Marsh Posté le 20-03-2004 à 20:17:53
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 ^^
Marsh Posté le 20-03-2004 à 20:27:21
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.
Marsh Posté le 20-03-2004 à 20:43:54
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).
Marsh Posté le 20-03-2004 à 20:52:49
ombreee a écrit : Taz |
tu confondrais pas langage et IDE toi ?
Marsh Posté le 20-03-2004 à 21:11:03
Ouais je voulais dire pascal ( se sent pas bien aujourd'hui) ..
Marsh Posté le 20-03-2004 à 18:40:25
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