TP3 q2_2 pile 4

Programmation Avancée

Modérateur : douinj

guill_f58
Messages : 27
Inscription : 10 oct. 2020 19:42

TP3 q2_2 pile 4

Message par guill_f58 » 19 oct. 2020 18:01

Bonjour, je suis bien bloqué pour la construction de la pile 4... J'aurais du mal à être vraiment précis sur mes difficultés.
Je pense avoir produit un empiler et dépiler. J'ai compris les grandes lignes du principe. Mais la méthode toString() me montre que je n''ai pas du comprendre grand chose au final.

Une question concrète par contre, il est écrit "import java.util.Stack;" en haut chez moi, cela veut dire que je peux utiliser Stack pour cette exercice ?
J'ai cru comprendre que non en lisant l'énoncé. Et comme l'exercice est noté, je ne sais pas ce que je peux montrer ou attendre. Je vais essayé d'écrire tout cela sur une feuille de papier.

Bonne soirée

douinj
Messages : 204
Inscription : 18 mars 2009 15:46

Re: TP3 q2_2 pile 4

Message par douinj » 19 oct. 2020 19:12

Bonsoir, aidez vous des diapositives 107 à 111 du cours 2
Bonne fin de liste

note concernant l'import c'est le reste d'un couper/coller

douinj
Messages : 204
Inscription : 18 mars 2009 15:46

Re: TP3 q2_2 pile 4

Message par douinj » 20 oct. 2020 12:13

Bonjour,où en êtes vous ?

egouy_r
Messages : 18
Inscription : 04 oct. 2020 13:23

Re: TP3 q2_2 pile 4

Message par egouy_r » 21 oct. 2020 11:28

Bonjour,

Je profite du ticket de GUILL_F58 pour poser une question la pile 4 du TP3.
Mes difficultés se situent au niveau de la classe interne Maillon et de la méthode "empiler" de la classe Pile4.
J'ai bien compris qu'il s'agissait d'une sorte de liste chainée, mais je ne comprends pas comment elle est structurée.
Je m'explique: un objet maillon est constitué d'une élément "couplé" (rattaché) avec un maillon (suivant).
Un objet "pile4" a pour attribut un maillon qui, lui même, a pour attributs un élément (=sommet ?) et un maillon.
Ma question: Je ne vois pas comment empiler des objects dans la pile. Je serais tenté d'écrire quelque chose comme ça:
stk = new Maillon(o, stk);
Mais ça me semble un peu bancal !!!
Auriez vous des indications, s'il vous plaît ?
Merci d'avance
Bonne journée
Cordialement

Ralph E.

guill_f58
Messages : 27
Inscription : 10 oct. 2020 19:42

Re: TP3 q2_2 pile 4

Message par guill_f58 » 21 oct. 2020 15:52

egouy_r a écrit :
21 oct. 2020 11:28
Bonjour,

Je profite du ticket de GUILL_F58 pour poser une question la pile 4 du TP3.
Mes difficultés se situent au niveau de la classe interne Maillon et de la méthode "empiler" de la classe Pile4.
J'ai bien compris qu'il s'agissait d'une sorte de liste chainée, mais je ne comprends pas comment elle est structurée.
Je m'explique: un objet maillon est constitué d'une élément "couplé" (rattaché) avec un maillon (suivant).
Un objet "pile4" a pour attribut un maillon qui, lui même, a pour attributs un élément (=sommet ?) et un maillon.
Ma question: Je ne vois pas comment empiler des objects dans la pile. Je serais tenté d'écrire quelque chose comme ça:
stk = new Maillon(o, stk);
Mais ça me semble un peu bancal !!!
Auriez vous des indications, s'il vous plaît ?
Merci d'avance
Bonne journée
Cordialement

Ralph E.
J'ai réussi à avancer et régler ce souci. Je te conseil de prendre une feuille de papier et d'écrire les règles qui te semblent évidentes.
Qu'est-ce-qui se passe quand je crée ma première cellule ? Ensuite, qu'est-ce-qui se passe quand je veux rajouter un autre objet à celui-ci tout en gardant à l'esprit le fait que je suis dans une pile ? il faut jouer avec les références et le garbage collector (je crois) qui est automatique car tu n'es pas dans un tableau dynamique ici.

egouy_r
Messages : 18
Inscription : 04 oct. 2020 13:23

Re: TP3 q2_2 pile 4

Message par egouy_r » 21 oct. 2020 17:39

guill_f58 a écrit :
21 oct. 2020 15:52
egouy_r a écrit :
21 oct. 2020 11:28
Bonjour,

Je profite du ticket de GUILL_F58 pour poser une question la pile 4 du TP3.
Mes difficultés se situent au niveau de la classe interne Maillon et de la méthode "empiler" de la classe Pile4.
J'ai bien compris qu'il s'agissait d'une sorte de liste chainée, mais je ne comprends pas comment elle est structurée.
Je m'explique: un objet maillon est constitué d'une élément "couplé" (rattaché) avec un maillon (suivant).
Un objet "pile4" a pour attribut un maillon qui, lui même, a pour attributs un élément (=sommet ?) et un maillon.
Ma question: Je ne vois pas comment empiler des objects dans la pile. Je serais tenté d'écrire quelque chose comme ça:
stk = new Maillon(o, stk);
Mais ça me semble un peu bancal !!!
Auriez vous des indications, s'il vous plaît ?
Merci d'avance
Bonne journée
Cordialement

Ralph E.
J'ai réussi à avancer et régler ce souci. Je te conseil de prendre une feuille de papier et d'écrire les règles qui te semblent évidentes.
Qu'est-ce-qui se passe quand je crée ma première cellule ? Ensuite, qu'est-ce-qui se passe quand je veux rajouter un autre objet à celui-ci tout en gardant à l'esprit le fait que je suis dans une pile ? il faut jouer avec les références et le garbage collector (je crois) qui est automatique car tu n'es pas dans un tableau dynamique ici.
Merci pour ton aide. c'est sympa !!
Est ce qu'il s'agit faire une boucle de n itérations (on suppose que la pile est constituée de n maillons par exemple) ?
A chaque itération, on rajoute un maillon à la pile, c'est à dire les maillons existants et à la fin, on ajoute le nouvel objet o...!!?
Ou alors, il faut plutôt faire qqch qui ressemblerait à ce que j'ai écrit dans mon message initial:
Maillon maillon_prec = stk;
stk = new Maillon (o, maillon_prec);
Merci encore.
Bonne soirée
Ralph

guill_f58
Messages : 27
Inscription : 10 oct. 2020 19:42

Re: TP3 q2_2 pile 4

Message par guill_f58 » 21 oct. 2020 18:45

egouy_r a écrit :
21 oct. 2020 17:39
guill_f58 a écrit :
21 oct. 2020 15:52
egouy_r a écrit :
21 oct. 2020 11:28
Bonjour,

Je profite du ticket de GUILL_F58 pour poser une question la pile 4 du TP3.
Mes difficultés se situent au niveau de la classe interne Maillon et de la méthode "empiler" de la classe Pile4.
J'ai bien compris qu'il s'agissait d'une sorte de liste chainée, mais je ne comprends pas comment elle est structurée.
Je m'explique: un objet maillon est constitué d'une élément "couplé" (rattaché) avec un maillon (suivant).
Un objet "pile4" a pour attribut un maillon qui, lui même, a pour attributs un élément (=sommet ?) et un maillon.
Ma question: Je ne vois pas comment empiler des objects dans la pile. Je serais tenté d'écrire quelque chose comme ça:
stk = new Maillon(o, stk);
Mais ça me semble un peu bancal !!!
Auriez vous des indications, s'il vous plaît ?
Merci d'avance
Bonne journée
Cordialement

Ralph E.
J'ai réussi à avancer et régler ce souci. Je te conseil de prendre une feuille de papier et d'écrire les règles qui te semblent évidentes.
Qu'est-ce-qui se passe quand je crée ma première cellule ? Ensuite, qu'est-ce-qui se passe quand je veux rajouter un autre objet à celui-ci tout en gardant à l'esprit le fait que je suis dans une pile ? il faut jouer avec les références et le garbage collector (je crois) qui est automatique car tu n'es pas dans un tableau dynamique ici.
Merci pour ton aide. c'est sympa !!
Est ce qu'il s'agit faire une boucle de n itérations (on suppose que la pile est constituée de n maillons par exemple) ?
A chaque itération, on rajoute un maillon à la pile, c'est à dire les maillons existants et à la fin, on ajoute le nouvel objet o...!!?
Ou alors, il faut plutôt faire qqch qui ressemblerait à ce que j'ai écrit dans mon message initial:
Maillon maillon_prec = stk;
stk = new Maillon (o, maillon_prec);
Merci encore.
Bonne soirée
Ralph
La pile a une capacité maximum mais celle-ci n'est pas forcement pleine. Tu ne peux donc pas faire une boucle sur ce principe.
La réponse ressemble plus à ta deuxième proposition.
Il faut connaître la raison qui fait que tu continue de boucler d'un objet à l'autre: est-ce-qu'il y a un autre objet qui suit celui que je suis entrain d'examiner ? La règle sera différente selon si c'est le 1er ou les suivants.
Ensuite, ta pile à un sommet qui contiendra toujours la dernière valeur que tu rajoute (fonctionnement d'une pile). Quand tu rajoute une nouvelle cellule (Maillon), tu comprends bien qu'il faut remplacer ton sommet par un nouveau. Quand tu fais cela, il faut faire attention à ce que ton nouveau sommet ne se trompe pas de suivant et que l'ancien sommet ai aussi le bon suivant.
Il faut donc jouer avec les instanciations en faisant tourner cela dans le bon sens.

egouy_r
Messages : 18
Inscription : 04 oct. 2020 13:23

Re: TP3 q2_2 pile 4

Message par egouy_r » 23 oct. 2020 17:09

Merci pour ta réponse et explication.
Grâce à tes indications, j'ai trouvé, je pense, une solution...
Merci encore
(@guill_f58 : je viens de répondre à ton MP)

Répondre