Boukhilinassim@voila.fr

Fermé
hasti - 20 juin 2005 à 19:11
 hasti - 21 juin 2005 à 10:02
Bonjour,
Je viens de realiser un programme en c++ dont lequel l ordinateur va choisir au hazard un mot d' une liste et vous devez le determiner lettre par lettre .Si je pose que n est la taille de cette liste
vous avez 2*n tentatives pour determimer le mot exacte en donnat a chaque fois une lettre et l'ordinateur vous aidera en indiquant si cette lettre existe ou non et si elle existe il indique a chaque fois son emplacement .
exemple:
l'exécution doit etre comme suite :
votre mot est: ----.
Vous avez 8 tentatives.
1 tentative: a
exacte .votre mot maintenat est --a-.
2 tentative:b
Lettre inexistante.
Votre mot reste inchangé. --a-.
...
...
Mon problème est que si le programme me permetd'essayer une tentative alors l'autre tentative sera faite par elle meme et elle est tjs incorrecte .
exemple:
i tentative:o
exacte.Votre mot est...
( i+1) tentative: // C'est la mon problème
Lettre inexistante .Votre mot reste inchangé... //
(i+2) tentative: // Le programme fonctionne normallement
(i+3) tentative:// Retour au meme probleme

Je vais vous fournir mon code source et merci d'avance pour votre aide



#include <stdio.h>
#include<stdlib.h>
#include<time.h>
#include<string.h>
void main()
{
char liste[20][20]={"bonjour","hafed","stiti","salut","cavas","bien","merci","impecable","informatique","logique","facile","encyclopedi","commentcamarche","programme","algorithme","compaq","windows","fenetre","reseau","intelligence"};
int p,i,j,k,n,trouve,existe,tail=1,b,v;
char mot1[20],mot2[20],let;


srand(time(0));
v=rand()%20;

strcpy(mot1,liste[v]);
strcpy(mot2,liste[v]);
n=strlen(liste[v]);
printf("\n\n\n\t\t\tBien venu au jeu de DEVINETTE\n\n\n");
for(i=0;i<n;i++) mot2[i]='-';
printf("Votre mot est: ");
for(i=0;i<n;i++) printf("%c",mot2[i]);
p=2*n;

printf("\n\nEssayer de deviner!!!!Trouver a chaque tentative une bonne lettre.\nVous avez %i tentatives.\n\n",p);
i=1;trouve=0;

while(i<=p && trouve==0){
printf("\n%i tentative :",i);
scanf("%c",&let);
j=0; existe=0;

while((j<n) && (existe==0)){
if(mot1[j]==let) existe=1;
else j++;
}

if(existe==1){
printf("\nBravo!!!Bonne reponse\n");
mot2[j]=let;
printf("votre mot maintenant est :");
for(k=0;k<n;k++) printf("%c",mot2[k]);
tail+=1;
}
else{
printf("\nLettre inexistante!!!\nvotre mot reste encore inchange :");
for(k=0;k<n;k++) printf("%c",mot2[k]);
}

if(i==p){
if(tail==(p-1)){ trouve=1;
printf("\n\n\nBravo!!vous avez trouve la Bonne reponse en %i tentatives",i);
}
else{ trouve=1;
printf("\n\n\nC est fini!!!\nVous avez perdu\nLa bonne reponse est :");
printf("%s",liste[v]);
}

}
else{
if(tail==p) {printf("\n\n\nBravo!!!Vous avez trouve la bonne reponse en %i tantatives",i);
trouve=1;
}
else i++;


}
}
scanf("%i",&b);
}

4 réponses

ok je vais le faire de suite je te dis si je trouve
0
j'ai la reponse a ce probleme :
au lieu de mettre scanf("%c",&let); au debut, mets plutot let=getche();

apres ca marche.
0
Merci bien pour votre aide.Quand j'ai rmplacé scanf par let=getch une erreure est survenu l'ors de la compilation,elle est la suivante:
implicit declaration of function 'int getche(..)'.
voulez vous bien m'aider encore?
Merci
0
il faut mettre "let=getche()", l'implicit declaration n'est pas une erreur mais un "attention". normalement ca se compile tout seul.

sinon met "let=getch(); , en incluant la bibliotheque "conio.h "
0
Merci beaucoup arth.
Grace a votre Interet mon programme fonctionne,
Salut ,a la prochaine.
0