Arbre arithmétique à partir d'une expression

ruthdy Messages postés 1 Statut Membre -  
 gdavis -
salutation a tous et je profite cette dite occasion pour vous faire part d'une petite question qui est la suivante:

Ecrire un progamme qui en C qui crée un arbre arithmétique à partir d'une expression postfixée fournie au clavier . ce programme devra permettre de donner une notation préfixée pour l'expression et de réaliser son évaluation.(en utilisant une structure arbre)
Le programme sera utilisé à travers un menu comportant les entrées suivantes:

1- Donner une expression posfixée
2- Affichage de la notation préfixée de l'expression
3- Evaluation de l'expression
4- Quitter le programme

REMARQUE: l'expression posfixée sera constituée de chiffres (0.9)et des opérateurs (+,-,*)

INDICATION: utilisé une "pile d'arbre" pour créer l'arbre arithmétique .
comptant sur vos suggestions , vous aller m'aider
does je vous remercie tous.

2 réponses

gdavis
 
Bsoir

exploite ceci que Lami20j m'a balancé

#include<stdio.h>
#include<stdlib.h>

typedef struct N_
{
int nb;
struct N_*gauche;
struct N_*droite;
} Noeud;

void CreerArbre (Noeud ** racine, int n);
void Traiter (Noeud * racine);
void AfficherPrefixe (Noeud * racine);
void AfficherPostfixe (Noeud * racine);
void AfficherInfixe (Noeud * racine);

Noeud *alloc ();

int main ()
{
Noeud *racine;

racine = NULL;
int n;

printf ("Numéro [100 pour terminer] ? ");
scanf ("%d", &n);
while (n != 100) {
CreerArbre (&racine, n);
printf ("Numéro [100 pour terminer] ? ");
scanf ("%d", &n);
}
AfficherPrefixe (racine);
puts ("");
AfficherInfixe (racine);
puts ("");
AfficherPostfixe (racine);
puts ("");
return 0;
}

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);
}


Noeud *alloc ()
{
Noeud *noeud;

noeud = (Noeud *) malloc (sizeof (Noeud));
return noeud;
}

void Traiter (Noeud * racine)
{
printf ("%d (%p) ; ", racine->nb, racine);
}

void AfficherPrefixe (Noeud * racine)
{
if (racine != NULL) {
Traiter (racine);
AfficherPrefixe (racine->gauche);
AfficherPrefixe (racine->droite);
}
}
void AfficherPostfixe (Noeud * racine)
{
if (racine != NULL) {
AfficherPostfixe (racine->gauche);
AfficherPostfixe (racine->droite);
Traiter (racine);
}
}


void AfficherInfixe (Noeud * racine)
{
if (racine != NULL) {
AfficherInfixe (racine->gauche);
Traiter (racine);
AfficherInfixe (racine->droite);
}
}

Bsoir
2
teebo Messages postés 33570 Statut Modérateur 1 793
 
Salut,
ouarf tu voudrais pas qu'on fasse tes TDs non plus? Ha ba si pardon j'avais pas vue :-D

.  .
\_/
1