TP3 question 2_2

Programmation Avancée

Modérateur : Douin

RENAUD
Messages : 50
Inscription : 21 sept. 2018 19:34

Re: TP3 question 2_2

Message par RENAUD » 20 oct. 2018 20:22

ça devrait mais ça dépend comment tu a codé empile finalement mais ce serait une file LIFO !
moi par contre j'utilise pas clone() j'ai cherché à le placer dans depile pas réussi à obtenir ce que je voulais sans remanier tous les tests d'origines.
donc dans empile je fait un stk=new maillon (o,stk) et dans depile un stk= stk.suivant comme stk est null au départ y'a toujours un suivant null

Timonnier
Messages : 4
Inscription : 21 oct. 2018 0:45

Re: TP3 question 2_2

Message par Timonnier » 21 oct. 2018 0:58

Bonjour à tous,

je suis aussi bloqué au même test que certains :
1) test_equals_contenu_different(question2): une pile2 d''entiers(1,2,3) == une pile2 de String("1","2","3") ???
Je n'arrive pas à trouver de solution pour différencier une pile d'entier, d'une pile de String.
J'ai pensé au Hashcode mais à priori ils aurait le même.

Auriez-vous des indications pour m'aiguiller à ce sujet?

Je vous remercie d'avance.

avidal
Messages : 3
Inscription : 02 oct. 2018 5:13

Re: TP3 question 2_2

Message par avidal » 21 oct. 2018 21:44

Bonjour,

Idem que beaucoup, tp3q2 :
There was 1 failure:
1) test_equals_contenu_different(question2): une pile d'entiers(1,2,3) == une pile de String("1","2","3") ???
Localement tous les tests passent, et je n'ai pas vu dans l'énoncé que le retour doit être différent pour des Integer ou des String.

Bon courage, et merci à celui qui trouve la réponse :)

Je continue de mon coté à creuser un peu...

avidal
Messages : 3
Inscription : 02 oct. 2018 5:13

Re: TP3 question 2_2

Message par avidal » 21 oct. 2018 22:50

Re-Bonsoir,

Bon j'ai trouvé une méthode pour passer les tests, je les ai peut être un peu contournés ...

Dans l'interface PileI j'ai ajouté la méthode suivante :

Code : Tout sélectionner

public boolean asInteger();
Puis dans chaque implémentation, cette méthode ressemble à cela (ici Pile1) :

Code : Tout sélectionner

public boolean asInteger() {
    boolean bool = false;
    // Parse la pile pour vérifier si il existe des Integer
    for(Object s : zone) {
        if(s instanceof Integer) {
            bool = true;
        }
    }
    return bool;
}
Et enfin, dans l’implémentation des méthodes equals(), j'ai ajouté un test sur cette nouvelle méthode :

Code : Tout sélectionner

public boolean equals(Object o) {
    if (o instanceof PileI) {
        PileI p = (PileI) o;
        return this.capacite() == p.capacite()
        && this.hashCode() == p.hashCode()
        && this.asInteger() == p.asInteger();
    } else {
        return false;
    }
}
Il reste l'implémentation à faire de la méthode asInteger() pour les autres piles, ça devrait aller vite avec toString().

Bon courage.

Alban

RENAUD
Messages : 50
Inscription : 21 sept. 2018 19:34

Re: TP3 question 2_2

Message par RENAUD » 22 oct. 2018 1:10

Avec le test sur le retour de depiler cela aurait du suffire.
Le code que m'a proposé jnews confirme l'égalité sur l'ensemble de la pile alors qu'un element retourné par depiler étant object, il y a bien la différence entre un integer et un string.

Personnellement j'aurais tendance à dire que la signature de pile est différente de chaque element qu'elle contient. Si depiler renvoie un object et que assertequals fait la difference du type d'origine alors soit les elements "s'organisent" en mémoire dans la pile pour être egal à une pile de string finalement en sortie, soit c'est autre chose. Je n'ai pas pensé à comparer, ni regarder la "somme" des hashcode de chaque element et le hascode de la pile, peut-être qu'ils sont cote à cote en mémoire?

En tout cas je ne comprend pas pourquoi jnews refuse plusieurs tests que j'ai soumis (je n'ai pas essayé avec le simple code qu'il m'a proposé) alors que j'ai juste rajouter deux trois assertequals pour depiler.

Mais à moins d'une réponse qui me dirait que depiler n'a strictement rien à voir réellement avec l'element que contient la pile, je suis au TP4 et j'ai vraiment du mal à piger la calculatrice MVC donc j'ai abandonné pour l'instant.
J'ai juste vu un blog que j'ai trouvé intéressant, qui m'a bien aidé, même si je n'ai pas approfondi et tout compris encore ce qu'il écrivait :
https://www.infoq.com/fr/articles/retou ... t-hashcode
Bonne nuit !

Gilles_OLLIVIER
Messages : 9
Inscription : 19 oct. 2018 15:34

Re: TP3 question 2_2

Message par Gilles_OLLIVIER » 22 oct. 2018 15:19

Bonjour,
Dans la question 2.1, on doit compléter la classe Pile pour ajouter les méthodes de l'interface PileI.
Dans la question 2.2, on nous demande de soumettre un code pour pile en utilisant Pile de la question 1.
Cela veut donc dire qu'il faut supprimer le code de Pile de la question 2.1 pour le remplacer par la nouvelle solution.
Etant donné que Pile de la question 1 n'a pas les méthodes sommet et equals, ils faut recréer ces 2 méthode avec seulement les methodes empiler et depiler.

Ou alors on garde le code de la questrion 2.1 pour Pile ?

En ce qui me concerne, j'ai fais les 2, et toutes les 2 sont validées par jnew. Alors quelle dois-je rendre? La solution dela question 2.1 ou celle de la solution 2.2 ?

J'ai envoyé un mail dans la nuit au prof, je n'ai pas de réponse.

Merci par avance

Répondre

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 1 invité