 Administrateur
 Auteur
 Modérateur
Inscrit le : 20 sep 2005
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é.
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
#include <stdio.h>
bool parenthese(char s='\n')
{
while((char c=getchar())!='\n')
{
if(c==s) return true;
else if(c=='('&& !parenthese(')')) return false;
else if(c=='['&& !parenthese(']')) return false;
else if(c=='{'&& !parenthese('}')) return false;
else if(c=='<'&& !parenthese('>')) return false;
}
return true;
}
int main(int argc, char *argv[])
{
printf(parenthese()?"yes\n":"no\n");
return 0;
}
EXPLICATIONS
Pour écrire sur la sortie standard, on utilise la fonction printf().
Pour lire sur l'entrée standard, on utilise la fonction scanf().
|
 Invité de passage
Inscrit le : 03 mai 2008
Localisation :
Emploi :
Loisirs :
|
Salut
j'ai tester ton programme mais ca marche ps bien et plus que ca il me donne erreur de compilation sur la boucle while((char c=getchar())!='n') et aussi il ne connait pas le bool . j'utilise comme compilateur visual studio c++
l'erreur je l ai trouvé sur ce test : ([)] il me donne comme resultat "yes"
|