2016-10-17 5 views
-4

J'ai trouvé tellement d'algorithmes sur google mais, je ne trouve pas d'algorithme exécutable qui convertit l'infixe en postfix. Comment convertir l'équation infixe en équation postfixée sur C#? S'il vous plaît, aidez-nous ...Comment convertir l'équation infixe en équation postfixe sur C#?

+0

Jetez un oeil à ce post http://stackoverflow.com/questions/1438030/infix-to-postfix-converter ou celui-ci http://www.codeproject.com/Tips/370486/Converting-InFix-to -PostFix-using-Csharp-VB-NET – Mulflar

Répondre

0

C'est un super petit projet pour apprendre à programmer. Il y a deux parties: analyser le code dans un arbre, puis imprimer l'arbre en tant que suffixe. Chaque nœud d'arbre est un opérateur avec deux enfants: 4 + (5/6) a + comme nœud racine, et les enfants sont 4 et 5/6. Lorsque vous regardez plus en profondeur le nœud 5/6, vous trouvez un parent avec deux enfants: le parent est / et les enfants sont 5 et 6.

L'analyse est la partie la plus difficile. Pour analyser une expression, regardez ce que vous devez analyser, trouvez l'opérateur et notez ce qui reste de l'opérateur et ce qui est à droite. L'opérateur est le nœud et il a deux enfants: le Parse(stuff to the left) et le Parse(stuff to the right). Vous devrez accorder une attention particulière à moins (qui est un opérateur unaire et donc pas strictement infixe). Je suggère de traiter minus comme un cas particulier: -4 devrait être analysé comme -4, pas un nœud moins avec un enfant 4. Lorsque vous analysez l'équation, tous les noeuds internes doivent être des opérateurs et tous les noeuds doivent être des nombres.

Après l'avoir analysé, imprimez simplement. Pour le nœud racine, print(node) affichera "(", l'enfant de gauche (imprime récursivement), l'enfant de droite (imprime récursivement), l'opérateur, puis ferme l'expression (nœud) avec ")".

Je n'ai pas de lien vers l'algorithme à portée de main, mais vous allez vraiment croître beaucoup plus si vous l'implémentez vous-même.