Programmation du jeu du devin en C (problème) [Résolu/Fermé]

Signaler
-
 Utilisateur anonyme -
Bonjour,

Je dois programmer le jeu du devin en C (trouver un chiffre entre 0 et 100 grâce à 10 propositions, à chaque proposition le jeu vous indique si c'est plus ou moins), le jeu marche correctement, j'ai tout terminé sauf que j'ai un petit problème : à la fin du jeu (gagné ou perdu) je dois afficher la liste des propositions effectuées dans un tableau mais mon programme affiche seulement la dernière proposition plusieurs fois dans ce tableau.

Voici mon code :

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

int jeu()
{
srand(time(NULL));
int tab[10];
int i,n,a;
a=rand()%100+0;
printf("%d",a);

for(i=10;i>=1;i--)
{
printf("\n\nIl vous reste %d coups\n",i);


for(n=1;n<=1;n++)
{
printf("Entrez un nombre : ");
scanf("%d",&tab[n]);


if(tab[n]>a && i>1)
{
printf("C'est moins !");
}
if(tab[n]<a && i>1)
{
printf("C'est plus !");
}


if(i==1 && tab[n]!=a)
{
printf(" C'EST PERDU !");

printf("\n\nvoici vos propositions : ");

for(i>0;i<=10;i++)
{
printf(" %d ",tab[n]);
}
printf("\n\nla solution etait : %d",a);
return 0;
}

if(tab[n]==a && i>0)
{
printf("\n\n C'EST GAGNE !");

printf("\n\nvoici vos propositions : ");

for(i>0;i<=10;i++)
{
printf(" %d ",tab[n]);
}
return 0;
}

}
}

}
int main(void)
{
printf(" ***BIENVENUE DANS LE JEU DU DEVIN***");
jeu();
fflush(stdin);
getchar();
return 0;
}


Le problème se trouve ici :

printf("\n\nvoici vos propositions : ");

for(i>0;i<=10;i++)
{
printf(" %d ",tab[n]);
}

Merci.

3 réponses

Messages postés
4237
Date d'inscription
lundi 20 avril 2009
Statut
Contributeur
Dernière intervention
12 septembre 2014
1 247
Bonjour,

normal qu'il t'affiche plusieurs fois la même proposition : tu fais une boucle sur i, et tu cherches à afficher tab[n]. donc quelle que soit la valeur de i, tu prends toujours le même indice dans le tableau.

Remplace tab[n] par tab[i].

Cordialement.

Bonjour chossette9, merci de ta réponse, le problème c'est que i correspond au nombre d'essai restants et tab[n] correspond a ma proposition.
Quand je compile en faisant tab[i], le programme m'écrit nimporte quoi..

Bien sûr puisque tu mets toujours ton résultat dans tab[n] et que ton n reste toujours égal à 1.
regarde ta boucle
for(n=1;n<=1;n++)


De plus, lors de l'affichage, l'initialisation de for est encore plus fantaisiste :
for(i>0;i<=10;i++)
Utilisateur anonyme
A oui je comprend ce que tu veux dire mais je vois vraiment pas comment faire en faite, je confond i,n et tab [n]..
Utilisateur anonyme
J'ai compris ce qui n'allait pas mais ce que je ne comprend c'est pourquoi le programme ne m'enregistre que la dernière proposition.

par exemple quand je fais
for(k=10;k>=1;k--)
{
printf(" %d ",tab[k]=n);
}
il m'affiche 10 fois la dernière proposition.
Utilisateur anonyme
C'est tab[k] qu'il faut afficher, pas tab[k]=n. Tu as une idée de la valeur de tab[k]=n ?
Utilisateur anonyme
A c'est bon ! j'ai suivi ton conseil ça marche, merci. Le seul truc c'est que quand par exemple j'ai fait 5 propositions, il me sort les 5 et pour le reste il m'affiche des 0 car il enregistre 10 propositions à afficher a chaque fois.
Utilisateur anonyme
Bien sûr
for(k=10;k>=1;k--)
ça affiche toutes les 10 valeurs.
À toi de mémoriser combien d'essais ont été nécessaires, pour n'afficher que ces valeurs là.