Jump to content

Les piles et les listes


Linou
Go to solution Solved by Sans-Visage,

Recommended Posts

  • Ancien Responsable Matière

Bonsoir, j'ai beaucoup de mal à comprendre la manière dont fonctionne le sommet d'une pile, par exemple ici :

https://image.noelshack.com/fichiers/2021/09/2/1614725042-pile.png

Je trouve cette liste dans données

[ e , a , c , d , b 

Donc j'ai données(2) qui vaut a du coup...

Alors que python affiche B

Merci beaucoup ! 

Il en va de même ici

1614725200-pile2.png

Je trouve sommet qui vaut 1 

 

Merci à la personne qui aura la patience !

 

Link to comment
Share on other sites

  • Ancien du Bureau
  • Solution

Helloo !!

On va faire le truc entièrement :

À chaque itération, on prend la lettre suivante de la liste "mot"

Ensuite, on regarde si sommet est supérieur à 0 : si il ne l'est pas, on lui rajoute 1 et on stocke la lettre à l'indice dans la listé "donnée", si il l'est et que la lettre précédente dans données est la même que celle à laquelle on s'intéresse, on retire 1 à sommet.

 

mot = abbabab

Lettre = a 

sommet = 1

Donnees = A 0 0 0 0 0 0 0 0 0

 

mot = abbabab

Lettre = B

sommet = 2

Donnees = A B 0 0 0 0 0 0 0 0

 

mot = abbabab

Lettre = B

sommet = 1

Donnees = A B 0 0 0 0 0 0 0 0

 

mot = abbabab

Lettre = A

sommet = 0

Donnees = A B 0 0 0 0 0 0 0 0

 

mot = abbabab

Lettre = B

sommet = 1

Donnees = B B 0 0 0 0 0 0 0 0

 

mot = abbabab

Lettre = A

sommet = 2

Donnees = B A 0 0 0 0 0 0 0 0

 

mot = abbabab

Lettre = B

sommet = 3

Donnees = B A B 0 0 0 0 0 0 0

 

Légende :

ou b : c'est la lettre que l'on compare 

sommet : sommet < 0 

A ou B : c'est la lettre dans la liste à laquelle on compare notre lettre d'intérêt 

 

Bon je suite désolé le programme est un peu long est chargé, j'espère que ça va t'aider, et si c'est toujours pas clair, hésite pas ! <33 

 

Link to comment
Share on other sites

  • Ancien Responsable Matière

Je regarde tout ça ce soir, merci énormément !!!

Vraiment merci pour ta patience et ta gentillesse !

@DuTACKauTac

il y a 55 minutes, DuTACKauTac a dit :

Bon je suite désolé le programme est un peu long est chargé, j'espère que ça va t'aider, et si c'est toujours pas clair, hésite pas ! <33 

Okkk j'ai ciblé le soucis en fait, je considère que les indices de ma liste sont : 0 puis 1 puis 2 jusqu'à 9 (pour moi c'était comme pos in range je sais pas si c'est clair?)

Du coup quand dans une liste on attribue a par exemple au sommet = 1 dans données, la première valeur de la liste (données) est a ?

en gros je la mettais pour sommet = 0, donc toute ma liste est décalée ?

il y a 58 minutes, DuTACKauTac a dit :

mot = abbabab

Lettre = a 

sommet = 1

Donnees = A 0 0 0 0 0 0 0 0 0

Pourquoi ici ton sommet = 1 ?  Il n'a pas été encore incrémenter pourtant ?

Link to comment
Share on other sites

  • Ancien du Bureau
il y a 10 minutes, Alpassino a dit :
il y a une heure, DuTACKauTac a dit :

Bon je suite désolé le programme est un peu long est chargé, j'espère que ça va t'aider, et si c'est toujours pas clair, hésite pas ! <33 

Okkk j'ai ciblé le soucis en fait, je considère que les indices de ma liste sont : 0 puis 1 puis 2 jusqu'à 9 (pour moi c'était comme pos in range je sais pas si c'est clair?)

Du coup quand dans une liste on attribue a par exemple au sommet = 1 dans données, la première valeur de la liste (données) est a ?

en gros je la mettais pour sommet = 0, donc toute ma liste est décalée ?

il y a une heure, DuTACKauTac a dit :

mot = abbabab

Lettre = a 

sommet = 1

Donnees = A 0 0 0 0 0 0 0 0 0

Pourquoi ici ton sommet = 1 ?  Il n'a pas été encore incrémenter pourtant ?

 

Non tu as raison, la liste est bien numérotée en partant de 0 !

En fait j'ai juste pas décomposé, mais dans sommet je mets le calcul déjà fait ! Mais en gros ici, on aurait Sommet = 0, donc sommet devient 0+1 (=1, j'ai sauté l'étape "initiale" dans tout le développement), et a va se mettre dans la liste à l'indice sommet, donc à l'indice 0 

Je suis désolé j'ai fait beaucoup de raccourci, je peux redévelopper un peu plus si besoin 

Link to comment
Share on other sites

  • Ancien du Bureau
il y a 1 minute, juliette5 a dit :

Re @DuTACKauTac! désolé mais je comprend pas du tout 

notamment ici, pourquoi le sommet devient égal à 0 alors que A est différent de B ? 

À l'étape précédente, on avait sommet == 2 et B == B (donnees[sommet-1]), donc on a sommet -=1 

Sommet est donc = à 1, et on a encore une fois A == donnees[sommet-1| ( == sommet [0] == A )

C'est mieux ?

Link to comment
Share on other sites

il y a 5 minutes, DuTACKauTac a dit :

Sommet est donc = à 1, et on a encore une fois A == donnees[sommet-1| ( == sommet [0] == A )

 

et du coup vu qu'on sommet = 1 et A=A on enlève 1 à A et il passe à 0 ? 

C'est sommet =1 qui appelle sommet =0 ?

(je suis désolé je suis perdue ahah)

Link to comment
Share on other sites

  • Ancien du Bureau
il y a 5 minutes, juliette5 a dit :

et du coup vu qu'on sommet = 1 et A=A on enlève 1 à A et il passe à 0 ? 

C'est sommet =1 qui appelle sommet =0 ?

 

C'est ça t'as compris ! Comme sommet > 0 et A == donnees[sommet-1], on fait la condition du haut, c'est à dire sommet-=1 

Link to comment
Share on other sites

  • Ancien du Bureau
il y a 30 minutes, juliette5 a dit :

wow mieux vaut tard que jamais mdrr, merci beaucoup en tout cas (je sais pas ce que je ferai sans toi!)

La récursivité c'est un truc assez dur à comprendre je trouve, faut beaucoup s'entrainer !! ;)) Et c'est avec plaisir haha, vraiment! 💖

Link to comment
Share on other sites

  • 2 weeks later...
Le 04/03/2021 à 10:51, DuTACKauTac a dit :

La récursivité c'est un truc assez dur à comprendre je trouve, faut beaucoup s'entrainer !! ;)) Et c'est avec plaisir haha, vraiment! 💖

Salut! Déjà un grand merci pour tes explications ^^ il y a quelque chose que je n'ai pas bien compris c'est la façon dont les lettres sont mises dans "donnees", en fait je ne comprends pas pourquoi au début on a AB et puis BB dans donnes tout ça, je ne sais pas si j'ai été claire ^^ 

(je ne comprends pourquoi pour le deuxième A du mot par exemple on ajoute pas un A après AB)

Edited by reyerika
précision
Link to comment
Share on other sites

Coucou !

 

Je déterre un p'tit peu ce sujet (désolé il me paraissait à l'abandon, j'ai eu pitié de lui ! 😅)

J'avais une question quand à la dernière étape (si proche du but, quelle tristesse)  :

Le 03/03/2021 à 12:17, DuTACKauTac a dit :

mot = abbabab

Lettre = B

sommet = 3

Donnees = B A B 0 0 0 0 0 0 0

Je ne comprends pas très bien pourquoi on fait ça

Voilà comment je conçois la chose :

lettre->B

-if sommet>0 : on est ok parce que sommet = 2

- if lettre==donnees[sommet-1] : on est ok parce que sommet=2 donc donnees[sommet-1]=donnees[1]=B tiens tiens c'est la même lettre que celle qu'on analyse

 DONC nos deux conditions du "if" sont réunies DONC on peut exécuter "sommet-=1", donc on print "2"

 

Mais apparemment, c'est pas ça qu'il faut trouver... il faut réaliser la boucle "else" pour au final exécuter "sommet+=1" qui nous donnerait sommet=3 (et ça serait juste, et fantastique car dans le programme du prof le programme affiche bien 3 !!!)

 

J'ai sûrement du zapper un p'tit détail, ou fait une erreur de calcul de tête de merde (bah oui c'est dur quand même d'additionner des chiffres entre 1, 2 et 3 mdr)

Mais je relis relis et relis sans trouver ce qui ne va pas...

Quelqu'un pourrait-il me réexpliquer la démarche à suivre ?

 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...