Initialisation d'une variable

Fermé
eugenieraza Messages postés 4 Date d'inscription vendredi 12 juin 2015 Statut Membre Dernière intervention 12 juin 2015 - Modifié par jipicy le 12/06/2015 à 19:29
 eugenieraza - 14 juin 2015 à 10:55
Bonjour,
le nombreMystere. Mon problème est que mon compteur ne se met jamais à 0 alors que je l'ai initialisé à 0
voici mon code :

#include <stdio.h>
#include <stdlib.h>
#include <time.h>


int main( int argc, char *argv[] )
{
int nombreMystere = 0, nombreEntre = 0  ;
const int MAX = 100, MIN = 1 ;
srand(time(NULL) );
nombreMystere = rand() % (MAX-MIN+1) + MIN ;
int coups=0;
printf("coups = %d, coups\n");

 do
 {
 printf("Quel est le nombre?\n");
 scanf("%d", &nombreEntre);
 if(nombreEntre>nombreMystere)
 printf("c'est moins\n");
 else if (nombreEntre<nombreMystere)
 printf("c'est plus\n");


 coups++;
}
while(nombreEntre != nombreMystere);
if (nombreEntre = nombreMystere);
 printf("Bravo, vous avez trouvé le nombre en , %d,coups\n");

 return 0;


}

Merci de votre aide.

eugenieraza


1 réponse

ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 228
Modifié par gravgun le 12/06/2015 à 19:31
'lut, normal, tu as oublié de donner le compteur à printf!
printf("Bravo, vous avez trouvé le nombre en %d coups\n", coups);

De plus, ton if est erroné (attribution au lieu de comparaison) mais de toute façon inutile: 1. il évalue toujours à
true
vu que le nombre mystère ne peut pas être 0 (une attribution renvoie son résultat, qui n'évalue à
false
que si c'est 0), et 2. si tu es sorti du while c'est que le nombre rentré était bon.
from human import idiocy
del idiocy
0
eugenieraza Messages postés 4 Date d'inscription vendredi 12 juin 2015 Statut Membre Dernière intervention 12 juin 2015
12 juin 2015 à 21:56
Merci @ gravgun. En fait j'y suis depuis des jours, il y a des choses que je vois bien qui ne devrais pas être, comme l'attribution que vous avez signalé mais quand je mettais le bon signe le programme ne compilait plus du tout!
j'aurai une autre question . le temps de retrouver le code. c'est une décrémentation qui se fait de 2 en 2 au lieu de 1 en 1!
Je refais le corrigé et je vous tiens au courant. Eugenieraza
0
eugenieraza Messages postés 4 Date d'inscription vendredi 12 juin 2015 Statut Membre Dernière intervention 12 juin 2015
12 juin 2015 à 23:16
Je n'ai pas réussi du 1er coup : j'ai bien suivi vos remarque mais quelque chose coinçait toujours. Alors je suis partie d'un sujet "Résolu "et en le parcourant et le testant j'ai vu qu'il n'affichait pas le compteur alors (par paresse) je suis partie de là et je l'ai résolu (pour moi)

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main( int argc, char** argv [])
{
int nombremystere = 0, nombreentre = 0, compteurdecoups = 0;

printf("compteur = %d\n",compteurdecoups);

const int MAX = 100, MIN = 1;

srand(time(NULL));
nombremystere = (rand () % (MAX - MIN + 1)) + MIN;
do
{
printf("Quel est le nombre ? ");
scanf("%d", &nombreentre);
compteurdecoups++;
printf("compteur = %d\n",compteurdecoups);
if (nombremystere > nombreentre)
printf("C'est plus!\n\n");
else if ( nombremystere < nombreentre)
printf("C'est moins!\n\n");
else
printf("Bravo! Tu as trouve le nombre mystere en %d coups.\n\n",compteurdecoups);

}while (nombreentre != nombremystere);

}

merci encore!
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
13 juin 2015 à 01:15
Bonjour,

int main( int argc, char** argv [])
C'est
char **argv
ou
char *argv[]
. Mais pas un mix des deux.

Et n'oublie pas le
 return 0;
final.

Merci d'utiliser la balise <code c> lorsque vous poster votre code.
Exemple : <code c>ici votre code</code>
Et n'hésitez pas à poster les erreurs signalés par le compilateur. Elles sont précieuses.

Cdlt,
0
eugenieraza > fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022
14 juin 2015 à 10:55
Merci @fiddy!
je n'ai jamais compris pourquoi il y a les 2 étoiles. j'ai vu ça dans une correction . maintenant je vois mieux quand il y a [] une seule étoile et sans ça **, si je comprends bien.
Pour les conseils de post aussi , ce n'est pas évident pour les débutants : je suis déjà abrutie d'être penchée sur le problème pendant des jours alors on ne pense plus à certains détails.
cordialement
0