Initialisation d'une variable

eugenieraza Messages postés 4 Date d'inscription   Statut Membre Dernière intervention   -  
 eugenieraza -
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 4814 Date d'inscription   Statut Contributeur Dernière intervention   1 223
 
'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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention  
 
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   Statut Contributeur Dernière intervention   1 846
 
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   Statut Contributeur Dernière intervention  
 
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