Advertisement
krs_

Untitled

Jan 26th, 2015
166
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.58 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3.  
  4. using namespace std;
  5.  
  6. class Stack
  7. {
  8. private:
  9.  
  10.     int tab[100000];
  11.     int tsize;
  12.  
  13. public:
  14.  
  15.     Stack()
  16.     {
  17.         tsize = 0;
  18.         tab[0] = 0;
  19.     }
  20.  
  21.     void push(int x)
  22.     {
  23.         tab[tsize ++] = x;
  24.     }
  25.  
  26.     int pop()
  27.     {
  28.         return tab[-- tsize];
  29.     }
  30.  
  31.     bool empty()
  32.     {
  33.         if(tsize == 0)  return true;
  34.         else            return false;
  35.     }
  36.  
  37.     int size()
  38.     {
  39.         return tsize;
  40.     }
  41.  
  42.     int top()
  43.     {
  44.         return tab[tsize - 1];
  45.     }
  46. };
  47.  
  48. void main()
  49. {
  50.     string buffer;
  51.  
  52.     cout << "Prosze podac rownanie w Odwrotnej Notacji Polskiej i zakonczyc je znakiem '='" << endl;
  53.     getline(cin, buffer);
  54.  
  55.     Stack s;
  56.     char temp[16] = "";
  57.     int x = 0;
  58.     int ta;
  59.     int tb;
  60.     int nums;
  61.  
  62.     for(int i = 0; i < buffer.size(); i ++)
  63.     {
  64.         if(buffer[i] == '=')
  65.         {
  66.             cout << "Wynik: " << s.pop() << endl;
  67.             break;
  68.         }
  69.         if(buffer[i] == ' ')
  70.         {
  71.             switch(temp[0])
  72.             {
  73.             case '+':
  74.                 {
  75.                     ta = s.pop();
  76.                     tb = s.pop();
  77.                     s.push(ta + tb);
  78.  
  79.                     break;
  80.                 }
  81.             case '-':
  82.                 {
  83.                     ta = s.pop();
  84.                     tb = s.pop();
  85.                     s.push(ta - tb);
  86.  
  87.                     break;
  88.                 }
  89.             case '*':
  90.                 {
  91.                     ta = s.pop();
  92.                     tb = s.pop();
  93.                     s.push(ta * tb);
  94.  
  95.                     break;
  96.                 }
  97.             case '/':
  98.                 {
  99.                     ta = s.pop();
  100.                     tb = s.pop();
  101.                     s.push(ta / tb);
  102.  
  103.                     break;
  104.                 }
  105.             case '^':
  106.                 {
  107.                     ta = s.pop();
  108.                     tb = s.pop();
  109.                     s.push(ta ^ tb);
  110.  
  111.                     break;
  112.                 }
  113.  
  114.             default:
  115.                 {
  116.                     s.push(atoi(temp));
  117.  
  118.                     break;
  119.                 }
  120.             }
  121.  
  122.             for(int x = 0; x < 16; x ++) temp[x] = '\0';
  123.             x = 0;
  124.             continue;
  125.         }
  126.         temp[x ++] = buffer[i];
  127.     }
  128.  
  129.     cin.get();
  130. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement