prosze o pomoc przy stworzeniu kalkulatora ze stosami

0

Hej, nie mam doświadczenia w programowaniu.
potrzebuje stworzyć program w c++, który będzie wykonywał działania matematyczne (dodawanie, odejmowanie, mnożenie, dzielenie) w nawiasach;
każdy z wpisywanych znaków będzie oddzielony spacją ( czyli na konsoli wpisuje sie np.: ( 6 * 8 ) - 8 ).
Muszę wykorzystać do tego dwa stosy: liczb i znaków.
czego brakuje w moim kodzie, aby program prawidlowo dzialal?

#include <iostream>
#include <stack>
using namespace std;
int main ()
{
    stack < int > StosLiczb;
    stack < char > StosZnakow;
    char token;
    while (cin >> token)
    {
        if (token == '0'|| token == '1' || token == '2' || token == '3' || token == '4' || token == '5' || token == '6' || token == '7' || token == '8' || token == '9')
        {
            StosLiczb.push(token);
        }
        if (token == '+' || token == '-' || token == '*' || token == '/')
        {
            StosZnakow.push(token);
        }
        if (token == '(')
        {
        }

        if (token == ')')
        {

            int y;
            char znak;
            int x;
            y = StosLiczb.top();                // wziecie wartosci z gory
            StosLiczb.pop();                    // usuniecie wartosci z gory
            x = StosLiczb.top();
            StosLiczb.pop();
            znak = StosZnakow.top();
            StosZnakow.pop();

            if (znak = '+')
            {
                int wynik;
                wynik = (y+x);
                StosLiczb.push(wynik);
            }
            else if (znak = '-')
            {
                int wynik;
                wynik = (y-x);
                StosLiczb.push(wynik);
            }
            else if (znak = '*')
            {
                int wynik;
                wynik = (y*x);
                StosLiczb.push(wynik);
            }
            else if (znak = '/')
            {
                int wynik;
                if (x = 0)
                {
                    cout << "NaN";
                }
                else
                {
                    wynik = (y/x);
                    StosLiczb.push(wynik);
                }
            }
        }
    }
        cout << (char)StosLiczb.top();
}
0

poczytaj o odwroconej notacji polskiej

1 użytkowników online, w tym zalogowanych: 0, gości: 1