PROBLEME
Vérifier si une expression est bien parenthésée est une chose, mais les parenthèses sont loin d'être la seule manière de regrouper des éléments. On utilise aussi les crochets, les accolades, ou les signes '<' et '>', pour grouper un certain nombre d'éléments.
Ecrivez un programme qui lit une ligne de texte, et vérifie que toutes les parenthèses , crochets, etc sont bien refermés, et dans l'ordre dans lequel ils ont été ouverts. Les paires signes pouvant être utilisées sont : '(' et ')', '[' et ']', '{' et '}', et '<' et '>'.
La ligne de texte peut contenir d'autres caractères que les 8 cités, et ceux-ci doivent être ignorés. La ligne s'arrête lorsque le caractère '\n' est rencontré.
Votre programme doit impérativement être basé sur une fonction récursive, et non sur une boucle..
CONTRAINTES
1 <= N <= 200, où N est le nombre de caractères de l'expression à vérifier.
SORTIE
Votre programme doit afficher une ligne contenant le texte "yes", si l'expression fournie en entrée est bien parenthésée, crochetée, etc. et "no" sinon.
CODE SOURCE
Code: C++ #include <cstdio> bool parenthese(char s = '\n') { while (true) { char c = getchar(); if (c == s) return true; else if (c == '\n') return false; else if (c == '(' && !parenthese(')')) return false; else if (c == '[' && !parenthese(']')) return false; else if (c == '{' && !parenthese('}')) return false; else if (c == '<' && !parenthese('>')) return false; } } int main(int argc, char* argv[]) { if (parenthese()) printf("yes\n"); else printf("no\n"); return 0; }
|