Bonjour,
J'ai essayé d'améliorer mon TP, mais je n'arrive pas à trouver les erreurs en ce qui concerne le nombre de coups et la boucle. Pour les boucles j'ai : continuerPartie undeclared first use this fonction). Pour le nombre de coups, ca me met un nombre comme 22000 ^^.
int main ( int argc, char** argv )
{
do
{
const long MAX = 100, MIN = 1;
long nombreEntre = 0, nombreMystere = 0, nombreDeCoups = 0;
int continuerPartie = 1;
do
{
printf("Quel est le nombre\n");
scanf("%ld", &nombreEntre);
if(nombreEntre < nombreMystere)
printf("C'est plus !\n\n");
else if(nombreEntre > nombreMystere)
printf("C'est moins !\n\n");
else
printf("Bravo, tu as trouve le nombreMystere en %ld coups !!!\n\n", nombreDeCoups);
}
while(nombreEntre != nombreMystere);
printf("Voulez vous rejouer ? Si oui tapez 1, Si non tapez 0");
scanf("%ld", &continuerPartie);
}
int main (int argc, char** argv ) { do { constlong MAX = 100, MIN = 1; long nombreEntre = 0, nombreMystere = 0, nombreDeCoups = 0; int continuerPartie = 1;
do { printf("Quel est le nombre\n");
scanf("%ld", &nombreEntre);
if(nombreEntre < nombreMystere) printf("C'est plus !\n\n"); elseif(nombreEntre > nombreMystere) printf("C'est moins !\n\n"); else printf("Bravo, tu as trouve le nombreMystere en %ld coups !!!\n\n", nombreDeCoups); } while(nombreEntre != nombreMystere);
printf("Voulez vous rejouer ? Si oui tapez 1, Si non tapez 0");
scanf("%ld", &continuerPartie); }
while(continuerPartie != 1);
system("PAUSE"); }
Comme ça. C'est quand même un peu plus lisible pour nous, même s'il manque encore une indentation correcte.
Cela aura pour effet de "colorer" votre code et donc d'en faciliter grandement la lecture. Vous aurez ainsi beaucoup plus de chances d'avoir des réponses.
Voici un exemple de code non coloré avec la balise "citation" (mauvais exemple) :
Citation : Pas de titre
int main(int argc, char *argv[])
{
long choixOperation;
printf("Choisissez l'operation a effectuer \n\n");
/* etc. */
}
Voici maintenant le même code coloré, si vous aviez utilisé la balise "code" (bon exemple) :
int main(int argc, char *argv[]) { long choixOperation;
printf("Choisissez l'operation a effectuer \n\n"); /* etc. */ }
C'est plus clair n'est-ce pas ?
N'hésitez pas à éditer votre message pour changer la balise afin de colorer votre code.
int main (int argc, char** argv ) { do {
srand(time(NULL));
nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
srand() ne doit être appelé qu'une fois au début du code...
Citation : Snype
do { int continuerPartie = 1;
<...> } while(continuerPartie != 1);
Je sais que c'est tentant, mais on ne peut malheureusement pas faire çà. L'expression est à l'extérieur du bloc. Il faut donc définir la variable avant le bloc :
int continuerPartie = 1; do {
<...> } while(continuerPartie != 1);
ou, si 'continuerPartie' est mise à jour sans conditions :
int continuerPartie; do {
<...>
continuerPartie = ...
<...> } while(continuerPartie != 1);
Citation : Snype
scanf("%ld", &continuerPartie);
avec scanf(), la valeur attendue par "%ld" est l'adresse d'un long et non l'adresse d'un int. C'est incohérent...
int main (int argc, char** argv ) { int continuerPartie = 1;
srand((unsigned)time(NULL)); do { constlong MAX = 100, MIN = 1; long nombreEntre = 0, nombreMystere = 0, nombreDeCoups = 0;
nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
do { printf("Quel est le nombre\n");
scanf("%ld", &nombreEntre); if(nombreEntre < nombreMystere) printf("C'est plus !\n\n"); elseif(nombreEntre > nombreMystere) printf("C'est moins !\n\n"); else printf("Bravo, tu as trouve le nombreMystere en %ld coups !!!\n\n", nombreDeCoups); } while(nombreEntre != nombreMystere); printf("Voulez vous rejouer ? Si oui tapez 1, Si non tapez 0");
scanf("%d", &continuerPartie); }
while(continuerPartie != 1);
system("PAUSE"); return0; }
mais ça ne signifie pas qu'il fonctionne ni qu'il soit conforme à la spécification...
D'autre part, il fait des appels 'basiques' à scanf() sans aucun contrôle. Si on tape une lettre, c'est le drame... Préferer fgets() + strtol(), par exemple...
mais ça ne signifie pas qu'il fonctionne ni qu'il soit conforme à la spécification...
D'autre part, il fait des appels 'basiques' à scanf() sans aucun contrôle. Si on tape une lettre, c'est le drame... Préferer fgets() + strtol(), par exemple...
Je n'ai pas encore vu cela
Et merci pour vos réponses.
-ed- c'est la bonne soluce que tu as affiché On a po encore vu les "fgets() + strtol()"
Je dis "on" car je suis rendu à peu près comme toi
Amélioration du TP
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
If you'd like to join us, read "How do we work at OpenClassrooms"! :)