Le Programme



Code kilian valentin T02 

class Pile : #on créé une class pile pour pouvoir créé notre pile
    def __init__(self):
       self.tab = []

    def __str__ (self):
        return str(self.tab)

    def empiler (self,v):
        self.tab.append(v)

    def depiler (self):
        return self.tab.pop()

    def est_vide (self) :
        return self.tab==[]

    def sommet (self):  #on rajoute cette methode pour pouvoir l'utliser dans la fonction principale
        return self.tab[len(self.tab)-1]

def zeros(t):
    p=Pile() #on créé notre pile p
    p.empiler(0) #on empile 0
    for val in t: # on itere sur notre tableau
        if val == 0:
            c = p.depiler() #on depile p dans c
            c+=1  # on incremente c
            p.empiler(c) # on rempile p de c
        elif p.sommet() != 0:  #on regarde si le sommet de la pile est different de 0
            p.empiler(0)  # on empile 0

    print("pile -->"+ str(p))
    resultat=0
    while not p.est_vide() : # on cherche le maximum de notre pile
        d=p.depiler()
        if d > resultat :
            resultat = d  #on met le resultat dans la variable resultat



    return resultat


print(zeros([0, 1, 1, 2, 0, 0, 0, 5, 0, 0]))
print(zeros([0,0,4,8,0,8,0,0,0]))
print(zeros([5,0,0,2,1,5,0,0,0,0,0,2,3]))

			
Chaîne à afficher si l'image ne peut s'afficher
Pile contenant un 0
Le but de ce projet est de lire un tableau et de renvoie le plus grand nombre consecutif de 0.
Chaîne à afficher si l'image ne peut s'afficher
image du projet
Chaîne à afficher si l'image ne peut s'afficher
le but de la fin du programme est danalyser la pile et de
rechercher le maximum

Les Poblèmes rencontrés

Mauvaise gestion des résultats dans les boucles

Un autre problème peut survenir lorsque on ne mets pas à jour correctement les résultats ou les variables à chaque itération dans une boucle. Cela peut entraîner des erreurs ou des résultats incohérents si la variable de résultat n'est pas correctement modifiée ou initialisée.

Erreurs liées à la gestion de la pile vide

Lorsque vous effectuez un p.depiler() ou utilisez p.sommet(), on doit s'assurer que la pile n'est pas vide avant d'essayer de dépiler ou d'obtenir le sommet de la pile.

Mauvaise gestion du FILO (First in Last Out)

Une pile a un mode de fonctionnement speciale et on ne peut pas l'implementer dans n'importe quelle odre.

les avantage d'utiliser une pile

Simplicité et rapidité des opérations

Les opérations de pile (empiler et dépiler) sont très simples et rapides, ayant une complexité de O(1), c'est-à-dire qu'elles s'exécutent en temps constant, peu importe la taille de la pile. Cela permet d'optimiser les performances, surtout lorsqu'il faut effectuer un grand nombre d'opérations.

Utilisation dans des algorithmes courants

Les piles sont largement utilisées dans de nombreux algorithmes, comme le parcours en profondeur (DFS) d'un graphe, la vérification des parenthèses équilibrées ça n'est donc pas depasser.