Rechercher : dans
Par :

Arbre arithmétique à partir d'une expression

Dernière réponse le 21 jun 2008 à 20:42:17 ruthdy, le 21 jan 2003 à 02:03:52 
 Signaler ce message aux modérateurs

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.

Meilleures réponses pour « Arbre arithmétique à partir d'une expression » dans :
[MSN] Utiliser MSN sans l'installer - à partir d'un site VoirIl est possible d'utiliser un client MSN pour discuter avec ses amis sans avoir à l'installer. Il existe quelques clients conçus pour être utilisés à partir d'un navigateur sous forme de pages Internet. Évidemment, leurs fonctionnalités sont...
Partitionner un disque dur Voir1 - Intérêt et avertissement 1.1 - Intérêt 1.2 - Avertissements préalables 2 - Partitions et systèmes de fichiers 2.1 - Partitions 2.2 - Systèmes de fichiers 3 - Quels logiciels ? 3.1 - Solutions gratuites 3.1.1 - FDISK de Windows 3.1.2...
Equivalent de Partition Magic (gratuit) VoirIl existe aujourd'hui plusieurs logiciels gratuits/libres pour partitionner qui équivalent le logiciel payant Partition Magic et constituent une excellente alternative. Voici une sélection des meilleurs logiciels de partitionnement gratuits ou...
Télécharger EASEUS Partition Master VoirEaseUs Partition Manager Free, est le logiciel par excellence à avoir sur son système. EaseUs Partition Manager partitionne facilement et sans erreur vos disques durs à la taille que vous avez choisie. Principales caractéristiques de EASEUS...
Télécharger Partition resizer VoirPour éviter de tout formater à chaque fois sur votre disque dur, il est préférable de partitionner. Partition Resizer est non seulement un programme de partitionnement mais en plus vous pouvez l'utiliser à tout moment. Cette action ne provoque aucune...
Tableur - Les expressions arithmétiques VoirPrésentation Les expressions arithmétiques sont des expressions simples construites avec des opérateurs arithmétiques et des constantes ou des références à des cellules. On appelle opérandes les valeurs sur lesquelles l'opérateur agit. On distingue...
Partition - Partitionnement d'un disque dur VoirQu'est-ce qu'une partition? Le partitionnement d'un disque dur se fait après le formatage physique de celui-ci et avant le formatage logique. Il consiste à créer des zones sur le disque dont les données ne seront pas mélangées. Cela sert par...
Partage de fichiers sous Windows XP VoirIntérêt Le partage de fichiers consiste à rendre disponible à travers le réseau le contenu d'un ou plusieurs répertoires. Tous les systèmes Windows possèdent en standard des mécanismes permettant de mettre facilement en partage le...

1

teebo, le 21 jan 2003 à 09:13:18

Salut,
ouarf tu voudrais pas qu'on fasse tes TDs non plus? Ha ba si pardon j'avais pas vue :-D

.  .
\_/

Répondre à teebo

2

 gdavis, le 21 jun 2008 à 20:42:17

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

Répondre à gdavis