Rechercher : dans
Par :

N'arrive pas à incrémenter une variable en C

Dernière réponse le 11 nov 2009 à 18:45:17 ts94, le 10 nov 2009 à 18:09:27 
 Signaler ce message aux modérateurs

Bonjour,

Voila, j'ai codé un petit jeu "Plus ou moins"grâce au tuto de m@teo21 du site du zéro et la j'essaie d'incrémenter une variable pour dire en combien de coups le joueur a-t-il gagné mais je consate que le joueur à utiliser ... 2 293 564 coups (waouh, il est nul celui-la !) et ce nombre ne change pas. Etant débutant et ayant 12 ans, je pense avoir fait une erreur stupide mais je ne comprends pas du tout laquelle.
Pourriez-vous m'aider svp si tout le code est faux ou me diriger dans la bonne voie si c'est une petite erreur :

Voici mon code source :

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


int main ( int argc, char** argv )
{
int nombreMystere = 0, nombreEntre = 0, nombreDeCoups = 0;
const int MAX = 100, MIN = 1;

// Génération du nombre aléatoire

srand(time(NULL));
nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;

/* La boucle du programme. Elle se répète tant que l'utilisateur
n'a pas trouvé le nombre mystère */

do
{
// On demande le nombre
printf("Quel est le nombre ? ");
scanf("%d", &nombreEntre);

// On compare le nombre entré avec le nombre mystère

if (nombreMystere > nombreEntre)
printf("C'est plus !\n\n");
if (nombreMystere > nombreEntre)
nombreDeCoups++;

else if (nombreMystere < nombreEntre)
printf("C'est moins !\n\n");
else if (nombreMystere < nombreEntre)
nombreDeCoups++;

else
printf ("Bravo, vous avez trouve le nombre mystere en %d coups", &nombreDeCoups);
} while (nombreEntre != nombreMystere);

}

D'avance merci.

Configuration: Windows Vista Internet Explorer 8.0

1

dr hisoka, le 10 nov 2009 à 18:54:42

Si tu fait &nombredecoup dans printf tu vois pas que tu affiche l'adresse du variable et pas sa valeur !!!!

Répondre à dr hisoka

2

dr hisoka, le 10 nov 2009 à 19:00:21

En plus t'a une fautte de syntaxe au niveau d'incrementation essaie de le trouvez !!!

Répondre à dr hisoka

4

ts94, le 10 nov 2009 à 19:41:11

Dsl mais ej en fais que de chercher et je ne vois pas ...

Répondre à ts94

5

loupius, le 10 nov 2009 à 22:17:37

Dans la vie, il n'y a pa s que les 'fautte' de syntaxe ;;; ;-)))
Bonne soirée.

Répondre à loupius

6

dr hisoka, le 10 nov 2009 à 22:20:52

Revise tes leçons mon petit ...et si tu trouve de prob je ss là ...en plus je vois tjr dans le forum que tu critique plus que tu donne de l'information a les autre donc "ferme la" un peu ok ?

Répondre à dr hisoka

9

ts94, le 10 nov 2009 à 22:35:43

Merci pour tes conseils

Répondre à ts94

10

dr hisoka, le 10 nov 2009 à 22:37:10

Eh non ts94 je parle pas de toi je parle a celui qui viens de parler dans le sujet tu l'as vu ?

Répondre à dr hisoka

12

ts94, le 10 nov 2009 à 22:41:30

Oui excuse, j'avais mal lu. En tt cas merci bcp. Mais peux-tu me dire quelle erreur j'ai fait stp

Répondre à ts94

16

dr hisoka, le 10 nov 2009 à 22:47:12

Bon voila tes erreur :
tu as mis cette parti :
...
...
if (nombreMystere > nombreEntre)
printf("C'est plus !\n\n");
if (nombreMystere > nombreEntre)
nombreDeCoups++;

pourquoi tu mis 2 if suivi c pas la peine tu vois
en suite tu dois faire
nombredecoup=++nombredecoup; pour incrementer et affecter voila les 2 prob que tu as
refait le prog et montre le et je te corrige s'il y a d'autre faute

Répondre à dr hisoka

17

ts94, le 10 nov 2009 à 22:55:14

Re:

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


int main ( int argc, char** argv )
{
int nombreMystere = 0, nombreEntre = 0, nombreDeCoups = 0;
const int MAX = 100, MIN = 1;


srand(time(NULL));
nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;



do
{

printf("Quel est le nombre ? ");
scanf("%d", &nombreEntre);


if (nombreMystere > nombreEntre)
printf("C'est plus !\n\n");
nombreDeCoups++;

else if (nombreMystere < nombreEntre)
printf("C'est moins !\n\n");
else if (nombreMystere < nombreEntre)
nombreDeCoups=++nombreDecoups;

else
printf ("Bravo, vous avez trouve le nombre mystere en %d coups", &nombreDeCoups);
} while (nombreEntre != nombreMystere);

}

Répondre à ts94

18

Pacorabanix, le 10 nov 2009 à 23:02:34

NombreDeCoups=++nombreDecoups;

cette instruction est étrange, bien qu'elle fasse ce que tu souhaites je pense. Mais il suffit de faire :

++nombreDeCoups;
ou
nombreDeCoups++;

(et ATTENTION à la majuscule oubliée dans coups! )

de plus, toujours au même endroit :


else if (nombreMystere < nombreEntre)
printf("C'est moins !\n\n");
else if (nombreMystere < nombreEntre)
nombreDeCoups=++nombreDecoups;

ça ne sert à rien de tester deux fois de suite la même chose, ça rend ton programme moins facile à lire.

il suffit de faire :

else if (nombreMystere < nombreEntre {
  printf("C'est moins !\n\n");
  nombreDecoups++;
}

tu as vu les accolades pour faire mon "bloc if" ?

Répondre à Pacorabanix

19

dr hisoka, le 10 nov 2009 à 23:04:05

étrange hhhh c la premier fois que j'ecoute ce terme en programmation

Répondre à dr hisoka

20

Pacorabanix, le 10 nov 2009 à 23:06:27

Euhhh... quel terme ?

Répondre à Pacorabanix

21

dr hisoka, le 10 nov 2009 à 23:08:10

étrange

Répondre à dr hisoka

22

ts94, le 10 nov 2009 à 23:08:48

En fait ce que je souhaiterais est ca :

l'ordinateur prend un nombre au hasard comprit entre 0 et 100. L'utilisateur doit taper un chiffre/nombre et l'ordinateur lui dit C'est plus ou C'est moins, lorsque le joueur a trouvé(et c'est la qu'intervient ce que je veux faire depuis tt à l'heure) l'ordinateur dit vous avez trouvé le nombre mystère en ... coups (par exemple en 5 coups)

Répondre à ts94

23

dr hisoka, le 10 nov 2009 à 23:09:56

We c ça l'intérêt de ce programme

Répondre à dr hisoka

24

ts94, le 10 nov 2009 à 23:10:41

Oui, pk ?

Répondre à ts94

25

ts94, le 10 nov 2009 à 23:16:11

Mon programme -je sais- n'a pas d'intérêt mais si il peut me permettre de comprendre il aura de l'utilité pour moi.

Répondre à ts94

26

fiddy, le 10 nov 2009 à 23:20:12

NombreDeCoups=++nombreDecoups;
A ne jamais utiliser. Comportement indéfini.

Cdlt;
Google is your friend

Répondre à fiddy

29

ts94, le 10 nov 2009 à 23:23:41

Ok merci

Répondre à ts94

28

ts94, le 10 nov 2009 à 23:23:10

Pourrais-tu me dire si c'est bon stp.

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


int main ( int argc, char** argv )
{
int nombreMystere = 0, nombreEntre = 0, nombreCoups = 0;
const int MAX = 100, MIN = 1;

srand(time(NULL));
nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;

do
{

printf("Quel est le nombre ? ");
scanf("%d", &nombreEntre);


if (nombreMystere > nombreEntre)
printf("C'est plus !\n\n");


else if (nombreMystere < nombreEntre) {
printf("C'est moins !\n\n");
nombreCoups++;
}

else
printf ("Bravo, vous avez trouve le nombre mystere en %d coups", nombreCoups);
} while (nombreEntre != nombreMystere);

}

Répondre à ts94

27

fiddy, le 10 nov 2009 à 23:21:39

en suite tu dois faire
nombredecoup=++nombredecoup;

Non, ceci est un comportement indéfini.
On utilise simplement nombrecoup++ ou ++nombrecoup;

Cdlt
Google is your friend

Répondre à fiddy

30

ts94, le 10 nov 2009 à 23:33:22

Pourrais-tu me dire si c'est bon stp.

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


int main ( int argc, char** argv )
{
int nombreMystere = 0, nombreEntre = 0, nombreCoups = 0;
const int MAX = 100, MIN = 1;

srand(time(NULL));
nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;

do
{

printf("Quel est le nombre ? ");
scanf("%d", &nombreEntre);


if (nombreMystere > nombreEntre)
printf("C'est plus !\n\n");


else if (nombreMystere < nombreEntre) {
printf("C'est moins !\n\n");
nombreCoups++;
}

else
printf ("Bravo, vous avez trouve le nombre mystere en %d coups", nombreCoups);
} while (nombreEntre != nombreMystere);

}

Répondre à ts94

31

Pacorabanix, le 11 nov 2009 à 02:09:35

Il faut tester toi même ;)

dis-nous toi-même si qqchose ne joue pas et quels sont les "symptomes" ("j'ai essayé avec tels ou tels chiffres ça ne marche pas car ça me donne ... au lieu de ....")

si tu as une erreur donne nous la description exacte de l'erreur.

Répondre à Pacorabanix

32

 ts94, le 11 nov 2009 à 18:45:17

J'ai enfin fini par trouver ce qui n'allait pas :

voici le code corrigé :

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


int main ( int argc, char** argv )
{
int nombreMystere = 0, nombreEntre = 0, nombreDeCoups = 0;
const int MAX = 100, MIN = 1;

// Génération du nombre aléatoire

srand(time(NULL));
nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;

/* La boucle du programme. Elle se répète tant que l'utilisateur
n'a pas trouvé le nombre mystère */

do
{
// On demande le nombre
printf("Quel est le nombre ? ");
scanf("%d", &nombreEntre);

// On compare le nombre entré avec le nombre mystère

if (nombreMystere > nombreEntre) {
printf("C'est plus !\n\n");
nombreDeCoups++;
}


else if (nombreMystere < nombreEntre) {
printf("C'est moins !\n\n");
nombreDeCoups++;
}

else
printf ("Bravo, vous avez trouve le nombre mystere en %d coups", nombreDeCoups);
} while (nombreEntre != nombreMystere);

}

Répondre à ts94

3

ts94, le 10 nov 2009 à 19:06:42

Merci de ton aide. Je vais chercher ...

Répondre à ts94
Collection CommentÇaMarche.net