noamaq | Bonjour à ceux qui passeront par ici. ^^
Je suis en train de me battre avec un devoir depuis plusieures semaines (pas en continu), et plusieurs sujets dans le forum m'ont déjà aidée à avancer, donc merci! Je ne suis pas très douée, je m'excuse d'avance si mes questions sont trop bêtes.
Le programme à faire est une version simple du mastermind : 5 chiffres, et comme réponse : 2 si bien placé, 1 si présent mais mal placé et 0 sinon.
Voici ce à quoi je suis arrivée :
Code :
- #include<stdio.h>
- #include<time.h>
- #define N 5
- void verifier(int REP[N], int Jeu[N]){ // fonction pour donner la réponse de l'ordinateur.
- int i, j;
- for(i=0;i<N;i++){
- for(j=0;j<N;j++){
- if(REP[i]==Jeu[j]){
- REP[i]=1;
- if(i==j) REP[i]=2;
-
- }
- // ici j'avais mis "else REP[i]=0;" mais évidemment après on ne peux plus comparer la valeur proposée.
- }
-
- }
- }
- int afficher(int T[N]){ // fonction pour afficher mes tableaux.
- int i;
- for(i=0;i<N;i++) printf("%i", T[i]);
- return 0;
- }
- int main(){
- srand(time(NULL));
- int Combi[N], PROP[N], Res[N];
- int FIN[N]={2,2,2,2,2};
- int i, p;
- p=1;
- for(i=0;i<N;i++){
- Combi[i]=rand()%(7)+1; // génère une combinaison aléatoire de 5 chiffres entre 1 et 8.
- printf("%i",Combi[i]); // l'affiche pour vérifications.
- }
- do{
- printf("Entrez 5 chiffres entre 1 et 8.\n" );
- scanf("%i %i %i %i %i", &PROP[0], &PROP[1], &PROP[2], &PROP[3], &PROP[4]);
- for(i=0;i<N;i++) Res[i]=PROP[i]; // copie la proposition de l'utilisateur pour ensuite donner une réponse.
- verifier(Res, Combi);
- p++;
- afficher(PROP);
- printf("\n" );
- afficher(Res);
- printf("\n" );
- }while(Res!=FIN && p<=12); // l'utilisateur a droit à 12 tentatives.
- if(Res==FIN) printf("Vous avez gagné!!\n" );
- else printf("Perdu.\n" );
- return 0;
- }
|
J'espère que ce n'est pas trop fouillis... mon problème se situe dans la fonction "vérifier", et je commence à être à court d'idées pour l'améliorer. J'ai enlevé la partie pour avoir un zéro, parce qu'en la laissant, il m'en affichait cinq. Je suppose que je l'avais mal placée dans les boucles, mais je ne vois pas comment la mettre ailleurs.
J'avais aussi essayé d'initialiser la réponse à cinq zéros dans le main et de la changer ensuite avec la fonction, ... sans grands résultats.
Je pense qu'en ayant trois tableaux dans la fonction, ça marcherait, mais j'ai peur de tout compliquer.
(Il n'y a pas de message d'erreur pour si l'utilisateur entre un chiffre qui n'est pas entre 1 et 8, car c'est moi l'utilisateur pour le moment.)
Merci si quelqu'un parvient à m'éclairer! Si jamais vous avez autre chose à faire, aucun soucis, je pourrais toujours recommencer en m'inspirant de se que d'autres personnes de ma classe ont fait, mais je préfèrerais quand même comprendre mes erreurs et réussir mon propre programme. ^^
|