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]))
Pile contenant un 0
Le but de ce projet est de lire un tableau et de renvoie le plus grand nombre consecutif de 0.
image du projet
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.