Je fais une application de calculatrice pour me mettre au défi et j'ai besoin d'un coup de main dans la planification de ma logique. Chose est, l'équation est dans une seule chaîne et je dois en quelque sorte comprendre les numéros sur les côtés gauche et droit d'un opérateur que j'évalue (il y a un ordre des opérations). Le défi est qu'il y a aussi des opérateurs unaires, ce qui signifie que je ne peux pas simplement supposer qu'un nombre (d'un côté ou de l'autre) est délimité par un autre opérateur. Par exemple - J'essaie d'évaluer quelque chose comme 5 + 5^-2-3. L'ordre des opérations signifie que je me concentre sur le^premier, donc j'ai besoin d'obtenir le 5 et -2, les comprendre, puis mettre à jour l'équation à 5 + 25-3 puis évaluer le reste des opérations dans l'ordre.Calculatrice Logique
Des idées? Merci.
Ouais, je l'ai vu un avant. Notation polonaise inversée? C'est une bonne idée, mais malheureusement, ce serait plutôt difficile à mettre en œuvre, étant donné que tout est transmis en une seule chaîne. :/ – M2065
L'algorithme de triage de triage est destiné à la conversion de l'infixe (c'est-à-dire 1 + 2) en RPN. – mclaassen
@ M2065 Ne pas rejeter cela trop vite! L'algo de Shunting-yard peut être complété et amélioré pour gérer la précédence et l'associativité.C'est l'algorithme le plus puissant pour cela, à part de faire un parser-> syntax-tree-> tree-eval. –