Adloun

NSI (terminale) · Chapitre 1 · Exercice de TD

Vérification du parenthésage

Structures de données linéaires · niveau 3 (difficile)

Énoncé

Vérification du parenthésage.

Écrire une fonction parentheses_correctes(expr) qui renvoie True si la chaîne expr est correctement parenthésée (chaque parenthèse ouvrante a une fermante correspondante, dans le bon ordre), et False sinon.

Corrigé

On utilise une pile : on empile chaque ( et, à chaque ), on dépile. Si l'on tente de dépiler une pile vide, ou s'il reste des parenthèses ouvrantes à la fin, l'expression est incorrecte.


def parentheses_correctes(expr):
    pile = []
    for caractere in expr:
        if caractere == "(":
            pile.append(caractere)      # parenthese ouvrante : on empile
        elif caractere == ")":
            if len(pile) == 0:
                return False            # une fermante sans ouvrante
            pile.pop()                  # on apparie avec une ouvrante
    return len(pile) == 0              # True si aucune ouvrante restante

# Tests
print(parentheses_correctes("(a+(b*c))"))   # True
print(parentheses_correctes("(a+b))"))      # False
print(parentheses_correctes("((a+b)"))      # False

La chaîne est parcourue une fois, chaque caractère provoquant au plus une opération de pile en : le coût total est .

100 % gratuit

Essaie le suivant avec le tuteur

Faire l'exercice suivant avec le tuteur

Sans compte : le cours, le premier QCM, 2 minutes de podcast et de vidéo et un exercice avec le tuteur. Pour tout le reste : inscription gratuite en 30 secondes, sans carte bancaire.

Le cours du chapitre · Tous les exercices du chapitre

Exercice suivant avec le tuteur →