Mit Stacks In C++ für die infix-und postfix-Ausdrücke

Bin ich ein Programm schreiben, das nimmt Benutzereingaben und verwendet stapeln Umwandlung eines infix-Ausdruck in einen postfix-Ausdruck, basierend auf Vorrang, mit Operanden, die immer gehen, bevor die Betreiber. Zum Beispiel, wenn ein Benutzer Eingänge:

(a+b*c)

dann sollte das Programm anzeigen:

abc*+

bisher habe ich dieses:

#include <iostream>
#include <stack>
#include <string>


using namespace std;

int main()
{
    stack<char> s;
    char input;
    while (cin.get(input) && input != '\n')
        {
            if (isalnum(input))
                cout << input << "\n";
            else if (input == '(')
                s.push(input);
            else if (input == ')')
            {
        while (!s.empty() && s.top() != '(')
            {
            cout << s.top();
            s.pop();
        }
            if(!s.empty()) 
                    s.pop();
            else
                cout << "ERROR: No Matching ( \n";
        }
     else if (s.empty() && input == '*'||'/'||'+'||'-' && s.top() < input) //Error Begins Here?
     {
         char a = '*';
         char b = '/';
         char c = '+';
         char d = '-';
         bool prec (char a, char b, char c, char d);
             return ('*' > '/' > '+' > '-');
             s.push(input);
     }
         else if (input == '*'||'/'||'+'||'-' && s.top() >= input)
             while (!s.empty()) 
          {
              cout << s.top();
          s.pop();
                  s.push(input);
          }
        }
    while (!s.empty())
    {
        cout << s.top();
        s.pop();
    }
}

Denen kompiliert und ausgeführt, aber funktioniert nicht wie es sollte. Wenn ein Ausdruck wie "ab" eingegeben, zeigt das Programm "ab", wie es sollte, aber wenn ich Eingang "a+b+c", dann nur "a" angezeigt. Dies bedeutet, dass das Programm nicht die Platzierung der Operatoren in den stack angezeigt werden später. Was ich brauche Hilfe bei änderung des Programms, so dass, wenn ein Bediener die Eingabe, es sollte Hinzugefügt werden auf den Stapel und dann wird basierend auf den Vorrang (*>/>+>-) nach dem Operanden, wenn die Eingabe beendet ist.

Ich bin ganz neu bei C++ und der Programmierung im Allgemeinen, also irgendwelche Vorschläge wäre toll.

Schreibe einen Kommentar