Advertisement
Guest User

Untitled

a guest
Jan 20th, 2020
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.29 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <string>
  4. #include <stack>
  5.  
  6. using namespace std;
  7. int symb_priotiry(char symb)
  8. {
  9.     switch (symb)
  10.     {
  11.     case '^':
  12.         return 4;
  13.     case '*':
  14.     case '/':
  15.         return 3;
  16.     case '+':
  17.     case '-':
  18.         return 2;
  19.     case ')':
  20.         return 1;
  21.     case '(':
  22.         return 0;
  23.     default:
  24.         return -1;
  25.     }
  26. }
  27.  
  28. int main() {
  29.     const int N = 10;
  30.     stack<char> stk;
  31.     int i,j=50, tos = 0;
  32.     char* line = new char;
  33.     char ch[50];
  34.     char smb[50];
  35.     int len = 0;
  36.     cin >> ch[50];
  37.     for (i = 0; i < 50; i++)
  38.         if(ch[i] == '\0') j--;
  39.     do
  40.     {
  41.         for (i = 0; i < j; i++)
  42.         {
  43.             if (ch[i] == '0' || ch[i] == '1' || ch[i] == '2' || ch[i] == '3' || ch[i] == '4' || ch[i] == '5' || ch[i] == '6' || ch[i] == '7' || ch[i] == '8' || ch[i] == '9') {
  44.                 line[i] = ch[i];
  45.                 len++;
  46.             }
  47.             else
  48.             {
  49.                 smb[i] = ch[i];
  50.                 symb_priotiry(smb[i]);
  51.                 switch (smb[i])
  52.                 {
  53.                 case 0:
  54.                     stk.push(ch[i]);
  55.                     tos++;
  56.                 case 1:
  57.                     do {
  58.                         line[i] = stk.top();
  59.                         len++;
  60.                         stk.pop();
  61.                         tos--;
  62.                     } while (smb[i] != '0');
  63.                     stk.pop();
  64.                     tos--;
  65.                 case 2:
  66.                 case 3:
  67.                 case 4:
  68.                     if (stk.empty()) {
  69.                         stk.push(ch[i]);
  70.                         tos++;
  71.                     }
  72.                     else {
  73.                         if (smb[i] >= smb[i - 1]) {
  74.                             stk.push(ch[i]);
  75.                             tos++;
  76.                         }
  77.                         else {
  78.                             line[i] = stk.top();
  79.                             len++;
  80.                             stk.pop();
  81.                             tos--;
  82.                         }
  83.                     }
  84.                 }
  85.             }
  86.         }
  87.     } while (ch[i] != '\0');
  88.     cout << endl;
  89.     for (i = 0; i < len; i++)
  90.     {
  91.         cout << line[i];
  92.     }
  93.     return 0;
  94. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement