CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • 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 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Conversion en notation polonaise inverse

OignonMayonaise
OignonMayonaise
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
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
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
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
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
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

Sous forums
  • Aide à l'achat Mac
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment