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 :

j'ai besoin de votre aide pour trouver l'erreur de boucle


Sujet :

C

  1. #1
    Débutant Avatar de razily
    Inscrit en
    Février 2009
    Messages
    376
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 376
    Points : 154
    Points
    154
    Par défaut j'ai besoin de votre aide pour trouver l'erreur de boucle
    j'ai codé une partie de mon projet mastermind , et plus exactement le deroulement du jeu principal !! au départ je croyais qu'il marche mais après plusieurs tentatives , j'ai remarqué qu'il y a une faille !! en tout cas je remarque que c'est sur la partie où on recherche les élements mal placés !! surtout sur l'instruction break !! l'idée est simple je marque à l'aide d'un tableau les cases déjà occupées , afin d'éviter qu'il ne recompte pas !!
    j'ai vraiment besoin de vos aides !!

    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
     
    #include <stdio.h>
    #include <stdlib.h>
    int main(int argc, char **argv)
    {
    	int i ,j;
    	int bonplace;
    	int malplace;
    	char tab[6] = {'A','A','B','F','G','\0'};
    	char Entree [6];
    	int stock [5];
    	int stock1[5];
     
    	for(i=0;i<5;i++)
    	{
    		printf("%c",tab[i]);
    	}
    	printf("\n***************Bonjour********************\n");
     
    	printf("entrer votre mot\n");
    	scanf("%s",Entree);
     
    	printf("*****votre mot*** %s",Entree);
     
    	printf("\n***********COMPARAISON ****\n");
    	printf("%s",tab);
    	printf("\n");
    	printf("%s",Entree);
    	printf("\n");
     
    	/*
    	 * AABFG
    	 * ABBGC
    	 * 
    	*/
    	bonplace = 0;
    	malplace = 0;
    	for(i=0;i<5;i++){
    		stock[i]=0;
    	}
     
    		for(i=0;i<5;i++)
    		{
    			if(tab[i]==Entree[i]){
    				bonplace++;
    				stock[i] = 1;
     
     
    			}
     
    		}
    /* ---> */		for(i=0;i<5;i++)
    		{
     
    			if((tab[i]!=Entree[i])&&(stock[i]==0))
    			{
     
    				for(j=0;j<5;j++)
    				{
    					if((tab[i]==Entree[j])&&(stock[j]==0)&&(stock1[j]!=1))
    					{
     
    						malplace++;
    						stock1[j] = 1;
    						//i++;
    						break;
    					}
     
     
    				}
     
     
    			}
     
     
    		}
     
    		printf("bon place %d\n",bonplace);
    		printf("mal place %d\n",malplace);
    	return 0;
    }
    merci d'avance !! vos suggestions seront les bienvenues

  2. #2
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    IS Consultant
    Inscrit en
    Février 2009
    Messages
    5 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IS Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 5 220
    Points : 19 452
    Points
    19 452
    Par défaut
    Salut.

    Un code indenté avec des petites corrections.

    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
    #include <stdio.h>
    /* #include <stdlib.h> inutile */
    /* Les paramètres de la fonction main sont inutiles */
    int main(void)
    {
    	int i ,j;
    	int bonplace;
    	int malplace;
    	char tab[6] = {'A','A','B','F','G','\0'};
    	char Entree [6];
    	int stock [5];
    	int stock1[5];
    	for(i=0;i<5;i++)
    	{
    		printf("%c",tab[i]);
    	}
    	printf("\n***************Bonjour********************\n");
    	printf("entrer votre mot\n");
    	scanf("%s",Entree);
    	printf("*****votre mot*** %s",Entree);
    	printf("\n***********COMPARAISON ****\n");
    	printf("%s",tab);
    	printf("\n");
    	printf("%s",Entree);
    	printf("\n");
    	/*
    	 * AABFG
    	 * ABBGC
    	 *
    	*/
    	bonplace = 0;
    	malplace = 0;
    	for(i=0;i<5;i++)
    	{
    		stock[i]=0;
    	}
        for(i=0;i<5;i++)
        {
            if(tab[i]==Entree[i])
            {
                bonplace++;
                stock[i] = 1;
            }
     
        }
        for(i=0;i<5;i++)
        {
            if((tab[i]!=Entree[i])&&(stock[i]==0))
            {
                for(j=0;j<5;j++)
                {
                    if((tab[i]==Entree[j])&&(stock[j]==0)&&(stock1[j]!=1))
                    {
                        malplace++;
                        stock1[j] = 1;
                        /* i++; */
                        break;
                    }
                }
            }
        }
     
        printf("bon place %d\n",bonplace);
        printf("mal place %d\n",malplace);
        return 0;
    }
    Mais je ne vois pas quel est le but du jeu. Placer les lettres dans le bonne ordre ? Avec un seul essai en tout ?

  3. #3
    Débutant Avatar de razily
    Inscrit en
    Février 2009
    Messages
    376
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 376
    Points : 154
    Points
    154
    Par défaut
    salut,
    en fait le but du jeu c'est de deviner une combinaison de lettre en entrant 10 propositions maxi au delà tu perds mais là pour faciliter les choses je l'ai stocké dans tab mais , en réalité cette châine de caractere sera dédiée aléatoirement ! par la fonction srand :

    voici 2 séries de test :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    *****votre mot*** BAAGF
    ***********COMPARAISON ****
    AABFG
    BAAGF
    bon place 1
    mal place 4
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    *****votre mot*** ABFAG
    ***********COMPARAISON ****
    AABFG
    ABFAG
    bon place 2
    mal place 3

  4. #4
    Membre éclairé
    Avatar de Pouet_forever
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    671
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 671
    Points : 842
    Points
    842
    Par défaut
    Un MasterMind avec des lettres

  5. #5
    Membre confirmé Avatar de Beniou
    Homme Profil pro
    Inscrit en
    Novembre 2009
    Messages
    357
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Novembre 2009
    Messages : 357
    Points : 515
    Points
    515
    Par défaut
    Bonjour,

    Le problème vient que ton tableau stock1 n'est pas initialisé. Pour palier à ton problème, il suffit de corriger ton script comme ci dessous en rajoutant la ligne stock1[i] = 0 dans ta boucle d'initialisation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    for(i=0;i<5;i++)
    	{
    		stock[i]=0;
    		stock1[i] = 0;
    	}

  6. #6
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 916
    Points
    17 916
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Beniou Voir le message
    il suffit de corriger ton script comme ci
    un programme C n'est pas un script

    un script n'est pas un programme c..

  7. #7
    Membre confirmé Avatar de Beniou
    Homme Profil pro
    Inscrit en
    Novembre 2009
    Messages
    357
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Novembre 2009
    Messages : 357
    Points : 515
    Points
    515
    Par défaut
    Pardon pardon ma langue a fourché...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 16
    Dernier message: 01/02/2007, 16h04
  2. J'ai besoin de votre aide pour une requête
    Par ovdz dans le forum Langage SQL
    Réponses: 6
    Dernier message: 20/05/2005, 11h42

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