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

Meilleures réponses pour « N'arrive pas à incrémenter une variable en C » dans :
Langage C - Les variables Voir Le concept de variable Une variable est un objet repéré par son nom, pouvant contenir des données, qui pourront être modifiées lors de l'exécution du programme. Les variables en langage C sont typées, c'est-à-dire que les données contenues dans...
Les variables en C++ VoirLes variables en C++ 1. Les différents types de variables 1.1 bool 1.2 char 1.3 unsigned short int 1.4 short int 1.5 unsigned long int 1.6 long int 1.7 int (16 bits) 1.8 int (32 bits) 1.9 unsigned int (16 bits) 1.10 unsigned int (32...
[Bash] La variable d'environnement PATH VoirLa variable d'environnement PATH I. Préambule II. C'est quoi le shell ? III. Définition IV. Séance de dissection V. Ajouter un répertoire à la variable PATH VI. Et puis... I. Préambule Sous les systèmes GNU/Linux qu'on le veuille ou...
Le remplacement de variables en shell Bash Voir=Le remplacement de variables= Introduction Il peut s'avérer utile de s'assurer qu'une variable est bien définie avant de procéder à son remplacement, ou tout simplement de s'assurer que celle-ci n'est pas vide, et dans ce cas de l'initialiser avec...
Langage C++ - Les variables VoirLe concept de variable Une variable est un objet repéré par son nom, pouvant contenir des données, qui pourront être modifiées lors de l'exécution du programme. Les variables en langage C++ sont typées, c'est-à-dire que les données contenues dans...
Langage C++ - Les types de données VoirLes types de données Les données manipulées en langage C++, comme en langage C, sont typées, c'est-à-dire que pour chaque donnée que l'on utilise (dans les variables par exemple) il faut préciser le type de donnée, ce qui permet de connaître...
Langage C - Les opérateurs VoirQu'est-ce qu'un opérateur ? Les opérateurs sont des symboles qui permettent de manipuler des variables, c'est-à-dire effectuer des opérations, les évaluer, etc. On distingue plusieurs types d'opérateurs : les opérateurs de calcul les opérateurs...

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