Advertisement
krs_

Untitled

Jan 26th, 2015
215
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.60 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.  
  61.     for(int i = 0; i < (int)buffer.size(); i ++)
  62.     {
  63.         if(buffer[i] == '=')
  64.         {
  65.             cout << "Wynik: " << s.pop() << endl;
  66.             break;
  67.         }
  68.         if(buffer[i] == ' ')
  69.         {
  70.             switch(temp[0])
  71.             {
  72.             case '+':
  73.                 {
  74.                     ta = s.pop();
  75.                     tb = s.pop();
  76.                     s.push(ta + tb);
  77.  
  78.                     break;
  79.                 }
  80.             case '-':
  81.                 {
  82.                     ta = s.pop();
  83.                     tb = s.pop();
  84.                     s.push(ta - tb);
  85.  
  86.                     break;
  87.                 }
  88.             case '*':
  89.                 {
  90.                     ta = s.pop();
  91.                     tb = s.pop();
  92.                     s.push(ta * tb);
  93.  
  94.                     break;
  95.                 }
  96.             case '/':
  97.                 {
  98.                     ta = s.pop();
  99.                     tb = s.pop();
  100.                     s.push(ta / tb);
  101.  
  102.                     break;
  103.                 }
  104.             case '^':
  105.                 {
  106.                     ta = s.pop();
  107.                     tb = s.pop();
  108.                     s.push(ta ^ tb);
  109.  
  110.                     break;
  111.                 }
  112.  
  113.             default:
  114.                 {
  115.                     s.push(atoi(temp));
  116.  
  117.                     break;
  118.                 }
  119.             }
  120.  
  121.             for(int j = 0; j < 16; j ++)
  122.             {
  123.                 temp[j] = '\0';
  124.             }
  125.             x = 0;
  126.             continue;
  127.         }
  128.         temp[x ++] = buffer[i];
  129.     }
  130.  
  131.     cin.get();
  132.     return 0;
  133. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement