TD8[MasterMind]

Voir le sujet précédent Voir le sujet suivant Aller en bas

resolu TD8[MasterMind]

Message  captaing le Sam 21 Nov 2009, 20:31

Bonsoir, j'ai aussi un probleme avec ma méthode malPlacés voici mon code :

Code:
public static int nbPionsMalPlacées(Combinaison proposition ,Combinaison solution){
                boolean[] tab = new boolean[4];
                int bienPlac = nbPionsBienPlacées(proposition,solution);
                int malPlac= 0;
                for (int i =0 ; i<proposition.combinaison.length; i++){
                      for (int j=0;i<solution.combinaison.length; i++){
                                if (proposition.combinaison[i] == solution.combinaison[j] && i!=j && tab[j] == false && proposition.combinaison[i] == solution.combinaison[i] && proposition.combinaison[j] == solution.combinaison[j] ) {

                                  tab[j] = true;
                                  malPlac = malPlac+1;
}

[b]mais quand la solution est par exemple : 4567 que j'entre 7654, il me dit O mal placés à la place de 4. J'en ai mal à la tête...


Dernière édition par captaing le Lun 23 Nov 2009, 18:42, édité 1 fois

captaing

Nombre de messages : 26
Prénom : stevie
Date d'inscription : 16/10/2008

Revenir en haut Aller en bas

resolu Re: TD8[MasterMind]

Message  DjMan42 le Sam 21 Nov 2009, 21:39

Cette ligne me semble incorrect

"int bienPlac = nbPionsBienPlacées(proposition,solution);"

Car, le nom de ta méthode de classe s'appelle nbPionsMalPlacées

Voici une méthode de classe nbPionsBienPlacées.
Pour quelle puisse fonctionner il faut que ta classe OO puisse avoir un getteur qui renvoi un tableau.


public static int nbPionsBienPlacées(Combinaison proposition,Combinaison solution){
int cor = 0;

for (int i=0; i<=(solution.getCombinaison().length)-1; i++){

if((solution.getCombinaison()[i]) == (proposition.getCombinaison()[i])){

cor = cor + 1;
}

}
return cor;

}

DjMan42

Nombre de messages : 219
Prénom : Eden
Statut : Etudiant 1er Indu
Localisation : Bruxelles
Date d'inscription : 28/10/2008

Revenir en haut Aller en bas

resolu Re: TD8[MasterMind]

Message  nvs le Sam 21 Nov 2009, 21:46

DjMan42 a écrit:[...] un getteur qui renvoi un tableau. [...]
je ne sais pas ce qu'en pensent mes collègues profs de java en 1ère, et les autres si affinités, mais à titre personnel, je trouve un tel getteur très laid. je préfère de loin un getteur qui retourne le contenu de la cellule i du tableau en question, où i est un argument dudit getteur.

sinon, c'est sympa le code vert en 24 points Wink






Razz

_________________

nvs

Nombre de messages : 5238
Age : 43
Prénom : Nicolas
Statut : prof
Localisation : bxl
Date d'inscription : 24/11/2005

http://nvansteenkiste.googlepages.com

Revenir en haut Aller en bas

resolu Re: TD8[MasterMind]

Message  captaing le Sam 21 Nov 2009, 21:50

Je n'initialise pas ma variable bienPlace à l'entier de cette méthode mais à l'entier que renvoie l'autre méthode nbPionsBienPlaces,
de plus mon souci ne concerne pas la methode BienPlace mais la MalPlaces. Merci quand même.

captaing

Nombre de messages : 26
Prénom : stevie
Date d'inscription : 16/10/2008

Revenir en haut Aller en bas

resolu Re: TD8[MasterMind]

Message  Wark le Dim 22 Nov 2009, 00:28

Et à quoi sert cette variable dans le cas de pions mal placés ?

Wark

Nombre de messages : 682
Age : 29
Prénom : Cédric
Statut : Diplômé 2010
Localisation : Braine l'alleud
Date d'inscription : 04/02/2008

Revenir en haut Aller en bas

resolu Re: TD8[MasterMind]

Message  captaing le Dim 22 Nov 2009, 10:49

c'est vrai que je ne l'utilise pas mais j'ai fais beaucoup de tests avec et j'ai oublié de la supprimer dans ce cas ci. Surprised

captaing

Nombre de messages : 26
Prénom : stevie
Date d'inscription : 16/10/2008

Revenir en haut Aller en bas

resolu Re: TD8[MasterMind]

Message  Wark le Dim 22 Nov 2009, 11:05

Ta deuxième boucle est mauvaise.. tu incrémentes i alors que tu veux faire tourner j .. -> Boucle "infinie" sur j=0.

Wark

Nombre de messages : 682
Age : 29
Prénom : Cédric
Statut : Diplômé 2010
Localisation : Braine l'alleud
Date d'inscription : 04/02/2008

Revenir en haut Aller en bas

resolu Re: TD8[MasterMind]

Message  captaing le Dim 22 Nov 2009, 12:06

Merci déjà pour ce probléme mais mon algo. ne fait toujours pas ce qu'on demande...

captaing

Nombre de messages : 26
Prénom : stevie
Date d'inscription : 16/10/2008

Revenir en haut Aller en bas

resolu Re: TD8[MasterMind]

Message  Wark le Dim 22 Nov 2009, 12:23

Je ne comprends pas l'intérêt de tes deux dernières conditions..

Si on traduit en français, tu fais :

Si proposition[i]=solution[j] et que tab[j] n'a pas encore été mis comme vrai et que i est différent de j (jusque là, ok) ET proposition[i]=solution[i] (Pourquoi ?) et proposition[j]=solution[j] (Re-Pourquoi ?)

Cela ne peut être vrai que dans des cas trop particuliers.

Wark

Nombre de messages : 682
Age : 29
Prénom : Cédric
Statut : Diplômé 2010
Localisation : Braine l'alleud
Date d'inscription : 04/02/2008

Revenir en haut Aller en bas

resolu Re: TD8[MasterMind]

Message  captaing le Dim 22 Nov 2009, 12:42

Je viens de modifié mon algo. et je pensais qu'il marchait jusqu' à ce que je teste un dernier cas lorsque la proposition = 3 4 7 1 et que je propose 3 3 3 3 par exemple, ca me dit 1 bien placé (correct) mais 1 mal placé alors que normalement cela devrait être 0 mal placé. La premiere fois meme si le premier 3 (de ma sol) et le premier 3 (de ma prop) sont comptés comme bien placé, il initialise pas tab[j] à true donc il le fait qu'à partir du deuxiéme 3 de ma prop. Vous me suivez Razz
Voici mon code
Code:
public static int nbPionsMalPlacées(Combinaison proposition ,Combinaison solution){
                boolean[] tab = new boolean[10];
                int malPlac= 0;
                for (int i =0 ; i<proposition.combinaison.length; i++){
                        for (int j=0;j<solution.combinaison.length; j++){

                                if (proposition.combinaison[i] == solution.combinaison[j] &&  tab[j] ==  false ) {
                                        tab[j] = true;
                                        malPlac = malPlac+1;

                                }

                        }
                }
                return malPlac;
        }

captaing

Nombre de messages : 26
Prénom : stevie
Date d'inscription : 16/10/2008

Revenir en haut Aller en bas

resolu Re: TD8[MasterMind]

Message  Wark le Dim 22 Nov 2009, 12:47

Solution basique : Faire en sorte que ton tableau de booléen communique avec la méthode "bienPlacés" en initialisant à true les cases effectivement bien placées.

(Autre chose, qui est juste au niveau du langage, plutôt que de faire :

Code:
tab[j]==false

Fais :

Code:
!tab[j]

Cela revient strictement au même mais évite une redondance inutile.. même si moins évidente que dans le cas de

Code:
tab[j]==true
)

Smile

Wark

Nombre de messages : 682
Age : 29
Prénom : Cédric
Statut : Diplômé 2010
Localisation : Braine l'alleud
Date d'inscription : 04/02/2008

Revenir en haut Aller en bas

resolu Re: TD8[MasterMind]

Message  captaing le Dim 22 Nov 2009, 13:06

Merci beaucoup, probléme résolu ca marche parfaitement!

captaing

Nombre de messages : 26
Prénom : stevie
Date d'inscription : 16/10/2008

Revenir en haut Aller en bas

resolu Re: TD8[MasterMind]

Message  captaing le Dim 22 Nov 2009, 13:06

Problem solved

captaing

Nombre de messages : 26
Prénom : stevie
Date d'inscription : 16/10/2008

Revenir en haut Aller en bas

resolu Re: TD8[MasterMind]

Message  pbt le Lun 23 Nov 2009, 10:29

captaing a écrit:Problem solved

Si tu veux marquer le sujet comme Problem solved tu dois éditer le premier message et cocher la "check box" correspondant à "résolu".

_________________
smartq.namok.be · faq ·  · IRC / irc.freenode.net #esi · blog.namok.be
style #pbt {heigth:189cm; weight:79kg; eye-color:#524000; hair:very short; dead pixels: some; }

pbt
Admin

Nombre de messages : 4862
Age : 45
Prénom : Pierre
Statut : prof
Localisation : La cité des géants
Date d'inscription : 24/11/2005

http://esi.namok.be

Revenir en haut Aller en bas

resolu Re: TD8[MasterMind]

Message  Contenu sponsorisé Aujourd'hui à 21:02


Contenu sponsorisé


Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut


 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum