Problème de boucle c++
hadeesse
Messages postés
8
Date d'inscription
Statut
Membre
Dernière intervention
-
armasousou Messages postés 1268 Date d'inscription Statut Membre Dernière intervention -
armasousou Messages postés 1268 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
j'ai un petit souci avec mon code
Ma seconde boucle ne marche pas ! en faite quand je débogue avec mon ide (eclipse) le second scanf ::> scanf ("%c", &rep); n'attend pas ma saisie. il continue, et reprend la première boucle ou je dois rentrer une autre note !
merci d'avance pour vos solutions :)
j'ai un petit souci avec mon code
// Programme exercice en c++ #include <stdio.h> #include <conio.h> #include <stdlib.h> int main () { int nbr, note, cumul; float s; char rep; rep = 'O'; nbr = 0; cumul = 0; while ((rep = 'O')) { do { printf ("saisissez une note (entre 0 et 20) "); scanf ("%d", ¬e); }while (note>20 || note<0); nbr = nbr + 1; cumul = cumul + note; do { printf ("voulez vous continuer (O/N) ? "); scanf ("%c", &rep); }while((rep =! 'O') && (rep != 'N')); } s = cumul/nbr; printf ("votre moyenne est de %f", s); getch (); return 0; }
Ma seconde boucle ne marche pas ! en faite quand je débogue avec mon ide (eclipse) le second scanf ::> scanf ("%c", &rep); n'attend pas ma saisie. il continue, et reprend la première boucle ou je dois rentrer une autre note !
merci d'avance pour vos solutions :)
A voir également:
- Problème de boucle c++
- 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
15 réponses
merci pour ta réponse mais je suis en 1ere année de bts info, je débute et pour moi vider le buffer c'est du chinois :D. En gros la cellule en mémoire qui mémorise la variable rep doit être effacé avant le second scanf ? Mais par défaut quand il y a une saisie ça n'écrase pas de base les données de la cellule ?
en gros, t'as un circuit electrique qui enregistre le resultat (je parle pas de la valeur de retour) de scanf, quand tu tape un nombre, ca marche bien, sauf que tu tape ton nombre, le buffer l'envoi dans ta valeur, mais le "entré" que tu lance reste dans le buffer, et quand tu refais scanf, il chope le entré direct ^^
Par contre, tu fais du c, pas vraiment du c++, utilise fflush(stdin); pour vider le buffer
Par contre, tu fais du c, pas vraiment du c++, utilise fflush(stdin); pour vider le buffer
merci pour ta réponse mais je n'y arrive toujours pas
j'ai fais
je peux toujours pas saisir mon deuxième scanf (mais je sais pas trop ou placer la fonction donc j'ai fait ça au feeling xD )
j'ai fais
do { printf ("saisissez une note (entre 0 et 20) "); fflush(stdin); scanf ("%d", ¬e); }while (note>20 || note<0); nbr = nbr + 1; cumul = cumul + note; do { printf ("voulez vous continuer (O/N) ? "); fflush(stdin); scanf ("%c", &rep); }while((rep =! 'O') && (rep != 'N')); }
je peux toujours pas saisir mon deuxième scanf (mais je sais pas trop ou placer la fonction donc j'ai fait ça au feeling xD )
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
c'est bien placé, mais la condition de ton while ne marchera pas ^^
déja, je suis pas sur que "=!" existe, mais != oui, et pour comparer des chaines de caracteres en C, utilise strcmp(chaine1, chaine2).
déja, je suis pas sur que "=!" existe, mais != oui, et pour comparer des chaines de caracteres en C, utilise strcmp(chaine1, chaine2).
Lol c'est ce "=!" qui m'a foutu dans la merde :D
Sinon ça marche toujours pas mais je vais creuser pour bien comprendre la fonction strcmp (que je ne connaissais même pas de nom !)
merci pour ton aide !
Sinon ça marche toujours pas mais je vais creuser pour bien comprendre la fonction strcmp (que je ne connaissais même pas de nom !)
merci pour ton aide !
j'ai fais
mais l'ide me dit que strcmp n'est pas déclaré ! il faut que je le déclare avant le main ? Sinon la syntaxe au niveau de l'utilisation de la fonction est bonne ? :D
do { printf ("voulez vous continuer (O/N) ? "); fflush(stdin); scanf ("%c", &rep); }while((strcmp(rep, 'O')!=1) && (strcmp(rep, 'N')!=1));
mais l'ide me dit que strcmp n'est pas déclaré ! il faut que je le déclare avant le main ? Sinon la syntaxe au niveau de l'utilisation de la fonction est bonne ? :D
j'ai ajouté l'include mais j'ai des soucies de conversion entre char et const char*. Il faut que je crée des constantes 'O' et 'N' ? et que je change char en char* ?
ca marche pas :(
ca marche pas :(
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
int main () {
int nbr, note, cumul;
float s;
char rep;
rep = 'O';
nbr = 0;
cumul = 0;
while ((rep = 'O')) {
do {
printf ("saisissez une note (entre 0 et 20) ");
scanf ("%d", ¬e);
}while (note>20 || note<0);
nbr = nbr + 1;
cumul = cumul + note;
do {
printf ("voulez vous continuer (O/N) ? ");
scanf ("%s", &rep);
}while((strcmp(rep, "O")!=1) && (strcmp(rep, "N")!=1));
}
s = cumul/nbr;
printf ("votre moyenne est de %f", s);
getch ();
return 0;
}
Il faut que je change la déclartion de variable char non?
#include <conio.h>
#include <stdlib.h>
#include <string.h>
int main () {
int nbr, note, cumul;
float s;
char rep;
rep = 'O';
nbr = 0;
cumul = 0;
while ((rep = 'O')) {
do {
printf ("saisissez une note (entre 0 et 20) ");
scanf ("%d", ¬e);
}while (note>20 || note<0);
nbr = nbr + 1;
cumul = cumul + note;
do {
printf ("voulez vous continuer (O/N) ? ");
scanf ("%s", &rep);
}while((strcmp(rep, "O")!=1) && (strcmp(rep, "N")!=1));
}
s = cumul/nbr;
printf ("votre moyenne est de %f", s);
getch ();
return 0;
}
Il faut que je change la déclartion de variable char non?
// Programme exercice en c++ #include <stdio.h> #include <conio.h> #include <stdlib.h> #include <string.h> int main () { int nbr, note, cumul; float s; char rep[2]; rep = "O"; nbr = 0; cumul = 0; while ((rep = "O")) { do { printf ("saisissez une note (entre 0 et 20) "); scanf ("%d", ¬e); }while (note>20 || note<0); nbr = nbr + 1; cumul = cumul + note; do { printf ("voulez vous continuer (O/N) ? "); scanf ("%s", &rep); }while((strcmp(rep, "O")!=1) && (strcmp(rep, "N")!=1)); } s = cumul/nbr; printf ("votre moyenne est de %f", s); getch (); return 0; }
au niveau de l'initialisation de rep l'ide me met invalid array assignment
et pour le %s il me dit format '%s' expects type 'char*', but argument 2 has type 'char (*)[2]' je comprends pas pourquoi il voit char(*)[2] ...
et pourquoi tu mets [2] et pas [1] il n'y a qu'une lettre non ?
Sinon la fonction strcmp a l'air de marcher
merci pour ton aide dans tous les cas ça m'a déjà bien avancé ! si tu veux lâcher l'affaire pas de soucie :D