Необходимо дописать код перевода арифметического выражения в польскую инверсивную запись, выводит неверный ответ. С++

#include <iostream>
#include <string>

using namespace std;

class Stack
{
private:
    int size, top;
    char a[100];
public:
    Stack() { top = 0; }
    void push(char var)
    {
        a[++top] = var;
    }
    char pop()
    {
        return a[top--];
    }
    char see()
    {
        return a[top];
    }
    bool empty() { return top == 0; }
};

int prioritet(int c)
{
    int p;
    switch (c)
    {
        case '(':
            p = 0;
        case ')':
            p = 1;
        case '+':
        case '-':
            p = 2;
            break;
        case '*':
        case '/':
            p = 3;
            break;
        case '^':
            p = 4;
            break;
        default:
            break;
    }
     return p;
}

int main()
{
    setlocale(LC_ALL, "RUS");

    Stack stck;
    string start, poliz;
    cout << "Введите выражение: ";
    cin >> start;

    for (int i = 0; i < start.length(); i++)
    {
        if (!isdigit(start[i]))
        {
            if (stck.empty())
            {
                stck.push(start[i]);
            }
            else if ((prioritet(start[i]) >= prioritet(stck.see())))
            {
                if (start[i] == ')')
                {
                    while (stck.pop() != '(')
                    {
                        poliz += stck.pop();
                    }
                    stck.pop();
                }
                else
                {
                    stck.push(start[i]);
                }
            }
            else
            {
                while (!stck.empty())
                {
                    poliz += stck.pop();
                }
                stck.push(start[i]);
            }
        }
        else
        {
            poliz += start[i];
        }
    }
    while (!stck.empty())
    {
        poliz += stck.pop();
    }

    cout << "\n" << poliz << endl;

    return 0;
}

Ответы (0 шт):