IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Mastermind C++, probleme


Sujet :

C++

  1. #1
    Membre à l'essai
    Inscrit en
    Février 2009
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 12
    Points : 11
    Points
    11
    Par défaut Mastermind C++, probleme
    Bonjour a toutes et a tous,

    Voila, je doit réaliser un Mastermind en C++ qui globalement consiste a sa:

    Réaliser une application qui choisit au hasard une combinaison de 5 chiffres (compris entre 1 et 8) et qui propose à l’utilisateur de découvrir ce « code » secret.

    A chaque proposition du joueur, le programme précisera :

    - Le nombre de chiffres exacts proposés à la bonne place
    - Le nombre de chiffres exacts mais proposés à la mauvaise place.
    - Si l'utilisateur saisit une valeur incorrecte (6 chiffres, 1 lettres, un 0 ou 9), cela comptera comme une erreur et passera son tour.

    Si le code est découvert, le programme indiquera le nombre de coups tentés ; sinon, après 15 échecs, le programme s’arrêtera et indiquera au joueur la combinaison correcte.


    Pour le moment j'obtiens sa:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
     
    #include <iostream>
    #include <stdlib.h>
    #include <stdio.h>
    #include <time.h>
    using namespace std;
    #define maxnom 20
     
     
    int main()
    {
    	int nb_essais=0,nb,j, i, cpt;
        int correct=0, malplace=0;
        int entree[5], tmpcode[5];
    	char code[6],essai[2],nom[2][maxnom];
        nb=0;
    	i=0;
    	j=0;
    	cpt=0;
        rewind(stdin);
    	srand(time(0));
    		//determination de la valeur à découvrir
    	for(j=0;j<5;j++)
    	{
    		code[j]=(rand()%8)+1;
    		printf("%d",code[j]);
    	}
    		//saisie des noms des 2 joueurs
    	for(j=1;j<=2;j++)
    	{
    	printf("\nVeuillez saisir le nom du joueur %d: ",j);
    	scanf("%s", &nom[j]);
     
     
    	}
     
    		//début du jeux
    	i=0;
    	j=0;
        do
    	{
        		//stockage de la valeur a trouver dans une variable temporaire
             for (i=0; i<5; i++)
    		 {
               tmpcode[i]= code[i];
    		 }
     
    			//saisie des propositions des joueurs
     		 for(j=1;j<=2;j++)
    		 {	
     
    			printf("\nJoueur %s entrez votre proposition (5 chiffres): \n",nom[j]);
    			scanf("%s",&essai[j]);
    			cpt=0;
    			cpt=strlen(essai)-1;
    			nb_essais++;
    			printf("%d ",cpt);
    		  }
     
     
    			   //transposition de la valeur à trouver dans un tableau afin de faire les comparaisons 
    		 for(i=4; i>=0; i--)
    			{
    				entree[i]= essai[i] % 10;
    				essai[i] /= 10;
    			}
     
    			correct=0;
    				//tri du tableau afin de determiner les valeurs bien placées
     
    			for (i=0; i<5; i++)
    			{
    				  for (int j=0; j<5; j++)
    				  {
    					 if ((j != i) && (entree[i]==tmpcode[j]))
    					 {
    					   malplace++;
    					   entree[i]= -1;
    				       tmpcode[j]= -2;
    					   break;
    					 }
    				  }
    			}
     
    			 malplace=0;
    				//tri du tableau afin de determiner les valeurs bonne mais mal placées
     
    			 for (i=0; i<5; i++)
    				{
    					 if ((j != i) && (entree[i]==tmpcode[j]))
    						 {
    							malplace++;
    						    entree[i]= -1;
    					        tmpcode[j]= -2;
    						 }
    				}
     
    				printf("Vous avez %d chiffres bien place(s)%d mal place(s)\n",correct,malplace);
     
    			} while ((nb_essais < 15) && (correct != 5));
     
     
    	      if(nb_essais == 16)
    	       {
    			     printf("Plus de 16 essais, vous avez perdu. Le code etait \n");
    			     for (i=0; i<5; i++)
    				 {
    					printf("%d",code[i]);
    				 }
    		    }
    		   else if(correct == 5)
    				{	
    					printf("Gagne ! Nb d'essais : %d\n ",nb_essais );
    			    }
     
     
     
    	 system("pause");
    	 return 0;
     
       }

    Le problème c'est que lorsque je réalise des essais, il me dit qui n'y a aucune bonne réponse et/ou aucune mal placé.

    C'est donc pour sa que je fait appel à vous dans l'espoir que vous pourrez m'aider.

    Cordialement

  2. #2
    Membre chevronné
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Points : 2 107
    Points
    2 107
    Par défaut
    Bonjour et bienvenue sur le forum DVP. com !
    Première question : t'es sûr que c'est en C++ que tu veux le faire? Si je regarde ton code, il n'y a pas une seule partie qui me ferait penser à du C++. D'ailleurs, il compilerait très bien en C.
    A vrai dire, tu violes presque toutes les règles du C++:
    • printf : la version C++, c'est std::cout
    • déclaration des variables au début du programme. En C++ les variables peuvent être déclarées n'importe quand, et on préfère vraiment les déclarer juste là où on a besoin. C'est plus compréhensible pour tout le monde.
    • un programme bien long sans fonctions, ni orientation objet.

    Je me permet donc de t'orienter vers d'excellents cours C++ sur DVP.com ICI (et en particulier LA )

    Bonne continuation,

    Poukill

  3. #3
    Membre à l'essai
    Inscrit en
    Février 2009
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 12
    Points : 11
    Points
    11
    Par défaut
    Bonjour,

    Toutes les règles que je "violes" sont celles que ma prof de programmation m'apprend

    En se qui concerne les fonctions nous commençons à peine à les apprendre et les programmation objet se n'est qu'en 2nd année de ma formation donc je doit rester dans du basic.

  4. #4
    Membre chevronné
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Points : 2 107
    Points
    2 107
    Par défaut
    Citation Envoyé par mushary Voir le message
    Bonjour,

    Toutes les règles que je "violes" sont celles que ma prof de programmation m'apprend

    Vieux débat que je vais pas m'autoriser à enrichir ...

    En se qui concerne les fonctions nous commençons à peine à les apprendre et les programmation objet se n'est qu'en 2nd année de ma formation donc je doit rester dans du basic.
    OK d'accord, j'avais pas toutes ces infos...
    Je t'invite tout de même à consulter un peu la (lien dans ma signature) de DVP.com ainsi que le livre que je t'ai indiqué. Ca t'expliquera mieux les choses que tu as déjà vu, et te donnera parfois quelques longueurs d'avance sur des vrais orientations C++ !
    Ensuite, nous serons tout disposé à répondre à tes questions ou problèmes!

  5. #5
    Membre à l'essai
    Inscrit en
    Février 2009
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 12
    Points : 11
    Points
    11
    Par défaut
    D'accord merci pour le lien,

    je vais explorer le FAQ ^^


  6. #6
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Une petite indication: regarde tes indices de boucles. Quand on a comme ici des tas de tableaux, on fait attention à ses indices pour éviter les écrasement. Indication : en diagonale, j'en ai vu au moins 2.

Discussions similaires

  1. Probleme du jeu MasterMind en Python
    Par fan1993 dans le forum Général Python
    Réponses: 3
    Dernier message: 24/04/2014, 22h57
  2. Mastermind SDL probleme
    Par Jordan's dans le forum SDL
    Réponses: 8
    Dernier message: 09/05/2011, 19h05
  3. Probleme sur les chaines de caractere
    Par scorpiwolf dans le forum C
    Réponses: 8
    Dernier message: 06/05/2002, 19h01
  4. [Kylix] Probleme d'execution de programmes...
    Par yopziggy dans le forum EDI
    Réponses: 19
    Dernier message: 03/05/2002, 14h50
  5. [Kylix] Probleme de nombre flottant!!
    Par yopziggy dans le forum EDI
    Réponses: 5
    Dernier message: 02/05/2002, 10h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo