Obliczanie ONP z wyrażenia w stringu

0

Witam. Mam za zadanie obliczyć wyrażenie podanie w ONP, które podaję w stringu. Pomysł jest taki, że jeżeli lecę po stringu i jeżeli jest liczba to wrzucam na stos a jeżeli trafiam na znak to zdejmuje dwie liczby ze stosu i wstawiam wynik. Mam problem z tym że nie wiem za bardzo jak podzielić tego stringa w taki sposób żeby liczby zamieniał mi np. na inty i wrzucał je do stosu, a jeżeli trafi na znak +,-,*,/ wykonywał odpowiednią czynność.
Wyrażenie ma być w takiej postaci:
10 5 +
Każda liczba lub znak oddzielona jest spacjami.

1

Popatrz gdzies na githubie mam to w javie, jak nie to po poludniu Ci cos podpowiem.

1

hej.zobacz sobie kod z link, czyli

#include <iostream>
#include <vector>
#include <string>
#include <sstream>
#include <iterator>

int main()
{
    std::string str = "This is a string";
    std::istringstream buf(str);
    std::istream_iterator<std::string> beg(buf), end;

    std::vector<std::string> tokens(beg, end); // done!

    for(auto& s: tokens)
        std::cout << '"' << s << '"' << '\n';
}

W boost jest chyba funkcja split która po spacjach by ci rozbiła taki string.

Pamiętaj żeby także sprawdzić czy dany string to liczba czy np. znak, nie tylko + - itd. A czy ktoś nie podał złego stringa np. literkę a.

Zawsze można sobie najbardziej prymitywnie czyli wyciągnąć cstrina i przelecieć element po elemencie w strinu i sprawdzać za pomocą isspace() i isdigit.

1

Powinno Ci wystarczyc input.split(' '), a potem iteracja po liscie i:
Jak operand, to Konwert to int I push;
Jak operator, to to dwa razy pop, Wykonaj dzialanie I push rezultat na stos.
Jak input bedzie pusty, to rezulyat Masz na stosie.

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