arahariv | bonjour, j'ai un problème pour un exercice en cours, voici l'énoncé: Exercice 8 : Nombre caché.
1. Écrivez un programme qui demande à l’utilisateur de trouver un nombre entier secret
compris entre 0 et 1000. Pour cela il est guidé par le programme qui lui indique à chaque
essai si la valeur saisie est supérieure ou inférieure au nombre secret. Lorsque le jeu se
termine, le programme affiche le nombre d’essais sous la forme : gagné en ... essais.
Vous pouvez soit fixer d’avance la valeur du nombre secret dans le code, soit tirer un nombre
au hasard grâce à la fonction rand() (pas au programme du cours).
2. Modifiez le programme pour autoriser au plus 10 essais à l’utilisateur, et afficher un message
(par exemple perdu !) si l’utilisateur ne parvient pas à deviner le nombre au bout de 10
essais. Parvenez-vous toujours à gagner?
3. On veut maintenant inverser les rôles. Écrivez un programme qui devine un nombre secret
entre 1 et 1000 choisi par l’utilisateur. Le programme doit proposer des nombres, auxquels
l’utilisateur doit répondre par “g”, “p” ou “e” pour indiquer que le nombre proposé est
respectivement plus grand, plus petit, ou égal au nombre deviné. Le programme ne doit
jamais proposer deux fois le même nombre, et doit gagner à tous les coups (si l’utilisateur
ne triche pas).
Mon problème se trouve sur cette question, quand j'utilise g, p, e, ça compile mais ça fait n'importe quoi. Pourtant si j'utilise une variable entier ça marche, c'est à dire en utilisant plutôt 1,2 et 3 à la place. Voilà mon code: (je suis sur codeblocks)
Code :
- #include<stdio.h>
- int main(){
- int nbrecacher,nbre,i,j;
- char decision;
- printf("Entrez le nombre cache:\n" );
- scanf("%d",&nbrecacher);
- nbre=1000;
- i=1;
- j=2;
- do{
- printf("%d est p:plus petit,g:plus grand, e:egal, par rapport au nombre cache\n",nbre);
- scanf("%d",&decision);
- if(decision== 'p'){
- nbre=nbre+(1000/j);
- }
- if(decision== 'g'){
- nbre=nbre-(1000/j);
- }
- if(decision== 'e'){
- printf("Trouver en %d essais\n",i);
- }
- i++;
- j=j*2;
- }while(i<=10);
- }
|
Message édité par gilou le 27-10-2013 à 14:40:16
|