salah-djo
-
28 avril 2009 à 18:56
scriptiz
Messages postés1424Date d'inscriptiondimanche 21 décembre 2008StatutMembreDernière intervention14 septembre 2023
-
28 avril 2009 à 19:10
bonjour a touts svp je recherche l'algorithme de ce problem
Université 08 Mai 1945 Guelma
Département D’informatique
2ème Année LISI
2008/2009
Mini-projet en Algorithmique et structure de données II
Directives
Ce mini-projet a pour but d’expérimenter la manipulation des structures dynamiques : listes chaînées, piles et files, il peut être réalisé en binôme ou en monôme.
Le programme doit être développé en langage C++
Le programme doit être accompagné d’un rapport ne dépassant pas 3 pages
La date de remise de ce travail est le 05/05/2009.
Introduction
Ce mini projet se compose de 3 parties
1- l’évaluation des expressions mathématiques en notation polonaise suffixée.
2- la traduction des expressions mathématiques ordinaires en notation polonaise suffixée.
3- l’évaluation des expressions mathématiques ordinaires
Partie I : évaluation de l’expression exprimée en notation polonaise suffixée.
La notation polonaise est une manière pour écrire des expressions arithmétiques en s’affranchissant des parenthèses. Le tableau suivant explique le passage d’une expression mathématique ordinaire vers une expression en notation polonaise :
Exemple :
4+3 s’écrit en notation polonaise suffixée 4 3 +
(2+5)*4 s’écrit en notation polonaise suffixée 2 5 + 4 *
(2-17)*(3/(10-5)) s’écrit en notation polonaise suffixée 2 17 - 3 10 5 - / *
a) Entraînez vous sur les exemples suivants (les écrire en notation polonaise suffixée puis les évaluer)
5*(6+2)-12/4
20/(12-2)+(6-4)*5-4/2
(5/8)^2-(6+23)
b) l’algorithme d’évaluation des expressions polonaises suffixées consiste à traiter tous les caractères dans l’ordre de la notation polonaise suffixée jusqu'au dernier. Deux cas sont rencontrés :
-nous traitons un nombre ® il faut l’empiler
- nous traitons un opérateur de calcul ® il faut dépiler deux nombres; effectuer le calcul; empiler le résultat.
La valeur de l’expression calculée est le dernier élément qui se trouve dans la pile.
Exemple : évaluation de l’expression 5 6 2 + * 12 4 / - :
2 4
6 6 8 12 12 3
5 5 5 5 40 40 40 40 37
+ * / -
Pile
Travail Demandé
1- Proposer une structure de données pour stocker une expression mathématique exprimée en notation polonaise suffixée.
2- Écrire un algorithme qui permet d’évaluer une expression représentée avec la structure que tu as proposé dans la question précédente.
3- Traduire votre algorithme en fonction en langage C++, à laquelle l’expression est passée comme paramètre.
Partie II : Traduction d’une expression mathématique en notation polonaise suffixée
Nous supposons qu’il n’y a que les signes ^ * / + - ( )
Avec l’ordre de priorité connu et l’exécution de gauche à droite. Nous empilons une parenthèse ‘(‘ au départ de la pile et nous ajoutons une parenthèse fermente ‘)’ à la fin de l’expression.
Le travail consiste à traiter les caractères dans l’ordre de l’expression mathématique, jusqu’à la fin de l’expression. Quatre cas se présentent
nous traitons un nombre ® il va compléter le résultat
nous traitons une ‘(‘®nous empilons
nous traitons une ‘)’ ®nous dépilons jusqu’à ‘(‘ comprise; les opérateurs dépilés vont compléter le résultat.
Nous traitons un opérateur ®nous dépilons tous les opérateurs plus prioritaires ou de priorité égale, et les ajoutons au résultat. Puis nous empilons l’opérateur traité.
Proposer une structure de données pour représenter une expression mathématique ordinaire.
Définir la structure de données pile qui va être utilisé par l’algorithme de traduction
Réutiliser la même structure de données de la question 1, partie1 pour stocker le résultat de l’algorithme de traduction.
Écrire l’algorithme de traduction.
Développer une fonction en C++ qui permet à partir d’une expression mathématique ordinaire représentée avec la structure proposée dans la question 1 d’avoir une expression polonaise suffixée.
Partie III :
Dans cette partie, nous essayons de faire la synthèse.
Travail demandé
Écrire un programme en C++ qui permet à l’utilisateur d’introduire une expression mathématique ordinaire, puis il lui offre les chois suivants :
a. vérification si l’expression est correcte ou non (optionnel).
b. Traduction vers la notation polonaise suffixée en faisant appel à la fonction de traduction.
c. Évaluation de l’expression en faisant appel à la fonction d’évaluation.
Travail Supplémentaire (Optionnel)
Faire la même chose mais avec des expressions en notation polonaise préfixée.
Écrire un algorithme qui permet à partir d’une expression polonaise suffixée d’avoir une expression mathématique ordinaire.
Remarques
Il est demandé d’utiliser que des structures de données dynamiques (listes chaînées, piles représentées avec des listes chaînées).
Toute mémoire allouée doit être impérativement libérée enfin de programme.
Ne rien déclarer en global, tout transmettre en paramètre.
Il est recommandé de commencer par la deuxième (2ème) partie.
scriptiz
Messages postés1424Date d'inscriptiondimanche 21 décembre 2008StatutMembreDernière intervention14 septembre 2023425 28 avril 2009 à 19:10
Bonjour,
Malheureusement personne ici ne fera ton devoir/travail à ta place.
Il s'agit d'un forum d'entraine et non d'exploitation des connaissances des autres.
Je te conseille donc de revenir avec les problèmes que tu rencontrera lorsque tu fera ton travail, comme par exemple un erreur lors du développement, un algorithme d'une méthode que tu as faite qui ne fonctionne pas bien, ...
Bref fais le travail, et pose des questions quand tu as des erreurs.
Sinon pour 500€ je veux bien le faire quand même *_*