TP3 question 2_2

Programmation Avancée

Modérateur : Douin

CHEGHANNOU
Messages : 35
Inscription : 02 oct. 2018 7:10

TP3 question 2_2

Message par CHEGHANNOU » 12 oct. 2018 18:17

Bonjour à tous,

Je ne comprend pas du tout comment utiliser la classe interne Maillon de la classe Pile 4 dans le TP3 question 2_2.

Quelqu'un aurait-il l'amabilité de m'aiguiller SVP ?

JC

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

Re: TP3 question 2_2

Message par RENAUD » 12 oct. 2018 20:32

Hello !
Je ne suis pas encore là et je ne connaissais pas du tout cette classe, interface, ...
Je te met un lien sur son utilité https://ydisanto.developpez.com/tutorie ... cloneable/
Sinon tu as surement vu que tu a à accès aux méthodes de Maillon avec "stk" et que Maillon clone normalement par valeurs Pile ou plutôt les valeurs de Pile4 de type Pile et Cloneable.

Après comme cela doit être une liste chainée, et je ne vois pas trop encore j'y suis pas.
Mais soit stk n'est pas vide donc element est le premier element et suivant le reste de stk donc une liste vide ou une liste avec un element et un suivant (liste vide ou element + suivant...), etc...

Et la classe privé maillon de type cloneable doit avoir une utilité pour la liste, ici une sorte de pile tampon de "reste"/suivant. Là je m'avance un peu mais je vois la chose comme ça pour l'instant.

Bonne soirée ;)

a.tortevois
Messages : 47
Inscription : 05 oct. 2018 16:00
Contact :

Re: TP3 question 2_2

Message par a.tortevois » 12 oct. 2018 22:29

J'ai essayé d'utiliser la méthode clone mais j'ai l’erreur de compilation avec CloneNotSupportedException :s

Douin
Messages : 343
Inscription : 18 mars 2009 15:46

Re: TP3 question 2_2

Message par Douin » 13 oct. 2018 7:47

Bonjour les dernières diapositives du cours2 peuvent vous aider, c’est une gestion de listes chaînées bonne liste

jeff.prevot
Messages : 25
Inscription : 02 mars 2013 21:19

Re: TP3 question 2_2

Message par jeff.prevot » 13 oct. 2018 16:59

maillon est un élément (un maillon, sic) de la liste chainée qui sert de stockagé à Pile4.
chaque maillon contient sa valeur, et un pointeur vers le maillon suivant de la chaine.

de cette maniere, on peut parcourir la liste depuis la tete vers la queue.

une liste doublement chainée (deux pointeur par maillon, pour pointer le maillon précédent et le suivant), permettrait de parcourir dans les deux sens, mais ce n'est pas le but de l'exercice.

http://liris.cnrs.fr/pierre-antoine.cha ... _chainees/
https://fr.wikipedia.org/wiki/Liste_cha ... AEn%C3%A9e

CHEGHANNOU
Messages : 35
Inscription : 02 oct. 2018 7:10

Re: TP3 question 2_2

Message par CHEGHANNOU » 13 oct. 2018 17:21

Dans ce cas la on fait comment pour dépiler si on ne peut pas parcourir la chaîne dans les 2 sens ?

jeff.prevot
Messages : 25
Inscription : 02 mars 2013 21:19

Re: TP3 question 2_2

Message par jeff.prevot » 13 oct. 2018 21:06

c'est justement toute la difficultée du parcour de liste chainées.

comme l'a dit Mr Douin plus haut, support du cours 2, diapo 108.
un Maillon dispose de 2 propriétés : sa valeur, et un pointeur vers le Maillon suivant.

je ne sais pas si je peux aller plus loin dans l'astuce sans etre bani pour spoil, mais pour aider en restant sobre je peux insister sur le concept de liste chainée.
Depuis un maillon, tu as acces au suivant. ce suivant là a aussi un suivant, etc, etc. et ce jusqu'au dernier, qui lui aura la valeur de son champs suivant == null;
donc, si le maillon suivant n'a pas de suivant, alors c'est que tu es sur l'avant dernier.

CHEGHANNOU
Messages : 35
Inscription : 02 oct. 2018 7:10

Re: TP3 question 2_2

Message par CHEGHANNOU » 14 oct. 2018 13:47

Merci beaucoup pour ton aide Jeff. J'ai enfin réussi, mais je dois avouer que je me suis aidé d'un code trouvé sur le web.
En tous cas je trouve dommage de passer autant de temps pour un algorithme qui n'est pas très utile, car il existe des collections qui gèrent très bien les piles en JAVA.(Queue et Dequeue).

Merci encore :)

jeff.prevot
Messages : 25
Inscription : 02 mars 2013 21:19

Re: TP3 question 2_2

Message par jeff.prevot » 14 oct. 2018 17:57

Pour le temps passé dessus, jepense qu'on ne peut pas correctement utiliser une classe fournie par Java, d'autant plus une collection, si on n'a pas compris son implémentation.
Les liste chaînée sont très utiles dans beaucoup de problèmes, et peuvent permettre de mieux appréhender les graphes (ou inversement, c'est selon).

Ce que je trouve dommage, c'est qu'il n'y ait pas de prérequis explicite à l'inscription à ce module de programmation avancée.
Je pense notamment à NFA032 (notion d'Object), NFA035 (bibliothèques), NFA006 (structures de données et complexité), éventuellement NFA019 (projet JAVA).
Certains thème abordés ici peuvent, je pense, paraîtrent abstraits voire complexes si on n'a pas pris le temps de les étudier auparavant. La liste chaînée est un bon exemple. Et il s'agit du TP3... Les TP étant déjà chronophages, si en plus, on doit passer du temps à étudier les concepts qui servent de support...

Mais cela reste mon avis

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

Re: TP3 question 2_2

Message par RENAUD » 14 oct. 2018 19:38

Bon je bloque un peu aussi sur cette question incontournable du tp, car je m'obstine à gérer la liste sans rajouter de méthodes à Maillon. Or des méthodes supplémentaires constructeur, accesseur, modificateur dans Maillon me "simplifierait" la tâche. Y'a bien clone() mais c'est jute pour l'element pas pour suivant.
Peut on tout se permettre pour le tp sur les classes proposées si notre programme fonctionne sans que cela devienne faux à la final pour la note?

ps : en tant que prérequis personnellement je trouve que le terme "avancée" en bac+3 a suffi à me dire quel prérequis je devais avoir au moins sur toutes les notions globales d'algorithme et de programmation. Et j'ai pris le risque ;)
D'ailleurs j'évite toute question relatif au test junit et dès les premiers questions pour revenir dessus en dernier. Mais maintenant je le sais c'est ma lacune acquise !

Par contre j'ai un gout amer sur Jnews fin tp2 et la question 1 tp3 résultat je n'ai pas confiance au retour de jnews ce qui est gênant ça devrait être le contraire
Dernière édition par RENAUD le 14 oct. 2018 19:39, édité 1 fois.

CHEGHANNOU
Messages : 35
Inscription : 02 oct. 2018 7:10

Re: TP3 question 2_2

Message par CHEGHANNOU » 14 oct. 2018 19:39

Je suis tout à fait d'accord avec toi. Si on étudie les patrons nous devrions plus nous intéresser à l'architecture qu'à l'algorithmie.

Je ne voudrais pas abuser de ta gentillesse, mais j'ai un test qui ne passe pas dans la question 2 du tp3.

Je ne sais pas comment redéfinir ma méthode hashcode (notamment pour cette liste chaînée), de manière à faire la différence entre une liste de String et une liste d'Integer. Ex: ["1", "2", "3"] != [1, 2, 3].

Je passe tous les autres tests mais alors celui là...

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

Re: TP3 question 2_2

Message par RENAUD » 14 oct. 2018 19:48

C'est la difficulté en foad ce n'est pas la première matière qui me pose ce problème.
En direct tu réalises de suite avec le prof si y'a des oublis des lacunes etc et tu peux rectifier ou planifier rapidement les notions à revoir.
Par contre en foad une réponse lente sur forum te faire perdre du temps tu t'acharnes sur une erreur que tu ne vois pas comme quand tu apprends à résoudre un problème seul.
Mais bon en même temps si tu y arrives et que tu comprends surtout l'erreur c'est souvent plus définitif et mieux acquis ; tu veux plus jamais revivre ça toutes ces heures perdues ;)

a.tortevois
Messages : 47
Inscription : 05 oct. 2018 16:00
Contact :

Re: TP3 question 2_2

Message par a.tortevois » 14 oct. 2018 21:08

Bonsoir,
Ce post pourra peut être vous aider : http://deptmedia.cnam.fr/phpBB2/viewtop ... 40&t=13567
Bonne soirée

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

Re: TP3 question 2_2

Message par RENAUD » 14 oct. 2018 22:14

Merci
Je dois fatiguer à force mais je crois avoir compris ce post.
J'ai réussi en début de soirée et en fait je voulais absolument utiliser clone() pensant qu'elle était nécessaire.
Je ne comprend d'ailleurs toujours pas l'utilité je ne l'utilise jamais.
Dans une appli il suffit d'appeler element() ou suivant() et l'affecter à une variable Maillon ou un Objet ! Je ne vois pas l'intéret de clone() ici.

Tapio
Messages : 2
Inscription : 20 oct. 2018 17:09

Re: TP3 question 2_2

Message par Tapio » 20 oct. 2018 17:12

Bonjour,

J'en profite pour m'incruster dans le thread.

Lorsque j'essaie de dépiler, j'essaie donc de revenir en arrière dans la chaîne en spécifiant Maille = Maille.suivant().

Pourquoi est-ce que stk=stk.suivant(); ne me fait pas régresser dans la chaîne ?

EDIT: C'est bon j'ai trouvé, j'avais loupé quelque chose d'important dans ma méthode empiler.
Maintenant par contre j'ai le même problème, pour différentier les strings et les integer pour le dernier test. J'ai changé mes méthodes toString pour encapsuler les instanceof String par "\"", mais ça me fait péter 2 autres tests...

Répondre

Qui est en ligne ?

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