Arbre à partir d'une expression fonctionnelle
gdavis
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour,
Merci tous pour les différentes contributiions me permettant de comprendre progressivement mon apprentissage autour dr mon ptit projet.
Je suis quand même buté encore à un point:
Quel principe utiliser pour construire un arbre à partir d'une expression de la forme fonctionnelle.
Une expression de la forme fonctionnelle est par exemple *(-(+(a,b),c),d) qui représente la forme infixée (((a+b)-c)*d).
Merci d'avance pour votre contribution.
Merci tous pour les différentes contributiions me permettant de comprendre progressivement mon apprentissage autour dr mon ptit projet.
Je suis quand même buté encore à un point:
Quel principe utiliser pour construire un arbre à partir d'une expression de la forme fonctionnelle.
Une expression de la forme fonctionnelle est par exemple *(-(+(a,b),c),d) qui représente la forme infixée (((a+b)-c)*d).
Merci d'avance pour votre contribution.
A voir également:
- Arbre à partir d'une expression fonctionnelle
- Creer un groupe whatsapp a partir d'un autre groupe - Guide
- Comment faire une recherche à partir d'une photo - Guide
- Créer une icone à partir d'une image - Guide
- Créer une vidéo à partir de photos - Guide
- Fitness park a partir de quel age - Forum Loisirs / Divertissements
1 réponse
Il faut créer une fonction récursive qui va lire chaque caractère de ta forme fonctionnelle :
Si tu tombes sur un opérateur (/*-+) tu ajoutes un noeud à gauche.
Si tu tombes sur une variable : tu ajoutes une feuille à gauche si le noeud courant n'en possède pas, à droite s'il en possède et tu remontes d'un cran dans l'arbre (puisque les deux feuilles sont établies).
Si tu tombes sur un opérateur (/*-+) tu ajoutes un noeud à gauche.
Si tu tombes sur une variable : tu ajoutes une feuille à gauche si le noeud courant n'en possède pas, à droite s'il en possède et tu remontes d'un cran dans l'arbre (puisque les deux feuilles sont établies).
J'essaie un truc comme ci-dessous, çà me donne pas le résultat.
char main ()
{
Noeud *racine;
char c;
racine = NULL;
printf ("Etrer le aractère '#' pour terminer! ");
scanf (c);
while (c!='#') {
CreerArbre (&racine, c);
printf ("Etrer le aractère '#' pour terminer! ");
scanf (c);
}
void CreerArbre (Noeud ** racine, char c)
{
Noeud *nouveau;
nouveau = alloc ();
if (*racine == NULL) {
nouveau->nb = n;
nouveau->gauche = NULL;
nouveau->droite = NULL;
*racine = nouveau;
}
else if (n < (*racine)->nb)
CreerArbre (&(*racine)->gauche, c);
else if (n > (*racine)->nb)
CreerArbre (&(*racine)->droite, c);
}
(Merci Lami 20j)
Merci d0o0b
De plus, il y a une conditionnelle qui porte sur la variable n dans CreerArbre() qui n'est initialiser que dans un autre bloc conditionnel, donc inaccessible.