Lecture d'un arbre parenthésé

Fermé
Laura - 12 mai 2003 à 16:50
Pitu Messages postés 1441 Date d'inscription jeudi 3 octobre 2002 Statut Contributeur Dernière intervention 5 janvier 2013 - 13 mai 2003 à 15:36
Boujour à tous,j'aimerai vraiment que quelqu'un m'aide, en effet je debute en C et j'ai deja mal à la tete.
Le but est de lire dans un fichier une topologie de la forme suivante (ceci est juste un exemple)
(((1,2),3),(4,5),(6,7))
est de faire une analyse syntaxique, de plus il faudrait representer cette architecture sous forme d'arbre pour pouvoir agir directement sur l'arbre ...etc
Voila,Mais une grande question deja est: comment est ce que l'on arrive à lire dans un fichier sans connaitre à priori le type de donné que l'on lit (entier, caractere.....), et comment est ce que l'on fait le conditionnemnt' c'est a dire: si c'est un entier faire..si c'est une parenthese ouvrante ...etc.
Merci à toux ceux qui vont essayer de m'aider, car ça fait quelques jours que je suis dessus sans resultat.

1 réponse

Pitu Messages postés 1441 Date d'inscription jeudi 3 octobre 2002 Statut Contributeur Dernière intervention 5 janvier 2013 125
13 mai 2003 à 15:36
Bonjour Laura.

Je ne peux pas résoudre complètement ton pb pour la bonne raison que mes connaissances en C sont limitées, et que ça fait plus de 15 ans que je n'en ai plus fait.
Ce que je peux te dire, par contre, c'est qu'à priori, tu dois considérer ce que tu vas lire comme des caractères (après tout, la parenthèse, la virgule et les chiffres sont des caractères, non ?).
Pour commencer, il faut à mon avis que tu recherches la longueur de la chaîne totale. Il doit bien y avoir une fonction en C pour faire ça. Sinon, tu boucle de 1 à ... un certain nombre (limite fixée) jeusqu'à rencontrer un espace => tu as ta longueur de chaîne.
Ensuite, il faut que tu considères ta chaine comme un "vecteur".
Je m'explique : tu définis la variable chaine comme un string, et tu l'initialise avec ce que tu as en entrée.
Du coup, tu accèdes à chaque caractère de ta chaine comme à une coordonnée d'un vecteur (ex: chaine[6] = '2' dans ton exemple)
Là, il te reste donc à boucler pour i= 1 à la longueur totale, et de tester la valeur de chaine[i].
J'imagine qu'il est facile en C de savoir si un caractère est numérique ou non.
Voila, j'espère avoir pû t'aider un peu.

Bon courage et à bientôt.
 
   (:•Þ  Pitu
0