Forum > C et C++ > Expressions parenthésées, crochetées, ... >

Expressions parenthésées, crochetées, ...

répondre

première page page précédente page suivante dernière page

Navigation rapide :

Auteur Message
jeremya Posté le 21 avr 2009 16:29:10

Administrateur
Administrateur

Auteur
Auteur

Modérateur
Modérateur

Inscrit le : 08 nov 2008
Localisation : Nord-Pas-de-Calais
Emploi :
Loisirs :

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++
  1. #include <cstdio>
  2.  
  3. bool parenthese(char s = '\n')
  4. {
  5. while (true) {
  6. char c = getchar();
  7. if (c == s)
  8. return true;
  9. else if (c == '\n')
  10. return false;
  11. else if (c == '(' && !parenthese(')'))
  12. return false;
  13. else if (c == '[' && !parenthese(']'))
  14. return false;
  15. else if (c == '{' && !parenthese('}'))
  16. return false;
  17. else if (c == '<' && !parenthese('>'))
  18. return false;
  19. }
  20. }
  21.  
  22. int main(int argc, char* argv[])
  23. {
  24. if (parenthese())
  25. printf("yes\n");
  26. else
  27. printf("no\n");
  28.  
  29. return 0;
  30. }
  31.  
Messages : 284 http://www.jeremya.ironie.org citer

répondre

première page page précédente page suivante dernière page

Navigation rapide :

Forum > C et C++ > Expressions parenthésées, crochetées, ... >


Cette page a été générée le 17 mar 2010 08:07:50.
page d'accueil Jeremya's Web Site
jeremya.ironie.org

s'identifier

Nom d'utilisateur :
Mot de passe :

outils

qui est en ligne ?

4 visiteurs en ligne