Téléchargement
illégal
Posez votre question Signaler

Arbre arithmétique à partir d'une expression

ruthdy 1Messages postés 20 janvier 2003Date d'inscription - Dernière réponse le 21 juin 2008 à 20:42
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.
Lire la suite 

Arbre arithmétique à partir d'une expression »

2 réponses
Réponse
+1
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
Salut,
ouarf tu voudrais pas qu'on fasse tes TDs non plus? Ha ba si pardon j'avais pas vue :-D

.  .
\_/
Ajouter un commentaire
Ce document intitulé « Arbre arithmétique à partir d'une expression » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?