CONNEXION
  • RetourJeux
    • Tests
    • Soluces
    • Previews
    • Sorties
    • Hit Parade
    • Les + attendus
    • Tous les Jeux
  • RetourActu
    • Culture Geek
    • Astuces
    • Réalité Virtuelle
    • Rétrogaming
    • Toutes les actus
  • RetourHigh-Tech
    • Actus JVTECH
    • Bons plans
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTECH
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch
    • Xbox Series
    • Overwatch 2
    • FUT 23
    • League of Legends
    • Genshin Impact
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • PS4
  • One
  • Switch
  • Wii U
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Etoile Abonnement RSS

Sujet : Conversion en notation polonaise inverse

News culture
La Planète des Singes : Le Nouveau Royaume - la révolution simienne est en marche !
DébutPage précedente
1
Page suivantePage suivante
OignonMayonaise OignonMayonaise
MP
Niveau 5
07 décembre 2016 à 19:21:00

Bonjour :) Alors voila mon petit problème. Mon prof m'a donné un exo d'entrainement car je me faisais chier en cours... Sauf que j'ai un problème sur la méthode à utiliser :( Il m'a demandé de faire une calculatrice utilisant la notation polonaise inverse. Sauf que pour ce faire, encore faut il que je sache comment la conversion marche ... J'arrive pas à trouver une méthode qui marche à tous les coups. J'aimerais juste une méthode pour convertir un calcul simple avec parenthèse en notation polonaise inverse.

Les cas qui me perturbe vraiment c'est les doubles parenthèse, genre (a+b)*(c+d). Comment je note ça en notation polonaise inverse ? Ha et je code ça en C++. Même si je ne pense pas que ça vous soit utile de savoir ça ... Merci de votre aide :)

AlphaCygni AlphaCygni
MP
Niveau 10
07 décembre 2016 à 19:40:15

a b + c d + *

Note que tu as pas besoin de passer par la traduction notation polonaise <-> parenthèses pour faire une calculatrice. Mais c'est un autre exercice intéressant

OignonMayonaise OignonMayonaise
MP
Niveau 5
07 décembre 2016 à 20:14:26

Ça veut dire que je suis obligé d'utiliser au minimum deux variables pour calculer tout ça ? :( Je vois pas trop comment faire. Parce que je vois pas comment stocker à la fois les nombres et les signes. Il faut tout stocker dans un tableau de chaine de caractères ? J'avais prévu de stocker les nombres d'un coté et les signes de l'autre ...

AlphaCygni AlphaCygni
MP
Niveau 10
07 décembre 2016 à 20:28:57

Je sais pas exactement ce que tu veux faire. À mon avis le truc intéressant ça serait que ton truc prenne en entree un calcul en notation polonaise inverse (par exemple 1 2 + 3 4 + *), et renvoie le résultat (21 pour l'exemple). Pour faire ça il te faut une pile, où tu stockes les résultats intermédiaires au fur et à mesure que tu lis l'entree.

Si c'est pas ça que tu voulais faire alors il faut mieux expliquer :o))

OignonMayonaise OignonMayonaise
MP
Niveau 5
08 décembre 2016 à 13:25:32

Bah pour ton exemple, en gros je voulais prendre la version "normale" de ce calcul : (1+2)*(3+4)
Ensuite la transformer en notation polonaise inverse : 1 2 + 3 4 + *
Et finalement faire le calculs avec cette notation polonaise inverse (et donc renvoyer 21)
Mais je bloque sur la première étape. Transformer une équation "normale" en notation polonaise inverse.

Pour être sûr d'être clair, j'arrive pas avec (1+2)*(3+4) à obtenir 1 2 + 3 4 + * :(

dark_drow dark_drow
MP
Niveau 15
08 décembre 2016 à 14:19:53

si ton opération est bien parenthèsée - cad (1+(2*3)) tu peux t'en sortir facilement en jouant avec 2 listes, une pour mettre les chiffres et l'autre qui stocke les symboles et en lisant caractère par caractère
exemple simple :
[ ]
[ '(' ]

[1]
[ '(' ]

[1]
[ '(', '+' ]

[1]
[ '(', '+', '(']

[1, 2]
[ '(', '+', '(']

[1, 2]
[ '(', '+', '(', '*']

[1, 2, 3]
[ '(', '+', '(', '*']

[1, 2, 3]
[ '(', '+', '(', '*', ')']
la tu arrive à une parenthèse fermante, tu dépile tout jusqu'a la parenthèse ouvrante. les opérateurs passent dans l'autre liste :

[1, 2, 3, *]
[ '(', '+']

et enfin :

[1, 2, 3, *]
[ '(', '+', ')']

[1, 2, 3, *, +]
[ ]

Sans les parenthèses tu peux t'en sortir aussi je pense mais faut adapter l'algo

DébutPage précedente
1
Page suivantePage suivante
Répondre
Prévisu
?
Victime de harcèlement en ligne : comment réagir ?
Infos 0 connecté(s)

Gestion du forum

Modérateurs : godrik, LGV
Contacter les modérateurs - Règles du forum

Sujets à ne pas manquer

La vidéo du moment