Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- using namespace std;
- class Stack
- {
- private:
- int tab[100000];
- int tsize;
- public:
- Stack()
- {
- tsize = 0;
- tab[0] = 0;
- }
- void push(int x)
- {
- tab[tsize ++] = x;
- }
- int pop()
- {
- return tab[-- tsize];
- }
- bool empty()
- {
- if(tsize == 0) return true;
- else return false;
- }
- int size()
- {
- return tsize;
- }
- int top()
- {
- return tab[tsize - 1];
- }
- };
- void main()
- {
- string buffer;
- cout << "Prosze podac rownanie w Odwrotnej Notacji Polskiej i zakonczyc je znakiem '='" << endl;
- getline(cin, buffer);
- Stack s;
- char temp[16] = "";
- int x = 0;
- int ta;
- int tb;
- for(int i = 0; i < (int)buffer.size(); i ++)
- {
- if(buffer[i] == '=')
- {
- cout << "Wynik: " << s.pop() << endl;
- break;
- }
- if(buffer[i] == ' ')
- {
- switch(temp[0])
- {
- case '+':
- {
- ta = s.pop();
- tb = s.pop();
- s.push(ta + tb);
- break;
- }
- case '-':
- {
- ta = s.pop();
- tb = s.pop();
- s.push(ta - tb);
- break;
- }
- case '*':
- {
- ta = s.pop();
- tb = s.pop();
- s.push(ta * tb);
- break;
- }
- case '/':
- {
- ta = s.pop();
- tb = s.pop();
- s.push(ta / tb);
- break;
- }
- case '^':
- {
- ta = s.pop();
- tb = s.pop();
- s.push(ta ^ tb);
- break;
- }
- default:
- {
- s.push(atoi(temp));
- break;
- }
- }
- for(int j = 0; j < 16; j ++)
- {
- temp[j] = '\0';
- }
- x = 0;
- continue;
- }
- temp[x ++] = buffer[i];
- }
- cin.get();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement