Advertisement
Nita_Cristian

Masa - evaluare expresie

Feb 18th, 2020
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.10 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. ifstream fin("masa.in");
  6. ofstream fout("masa.out");
  7.  
  8. map<char, int> m;
  9. string s;
  10.  
  11. int rezolvare(int& i)
  12. {
  13.     stack<int> v;
  14.     v.push(0);
  15.  
  16.     for( ;i < s.length(); i++)
  17.     {
  18.         if(isalpha(s[i]))
  19.         {
  20.             v.push(m[s[i]]);
  21.         }
  22.         else if(isdigit(s[i]))
  23.         {
  24.             int val = v.top();
  25.             v.pop();
  26.             v.push(val * (s[i] - '0'));
  27.         }
  28.         else if(s[i] == '(')
  29.         {
  30.             i++;
  31.             int rez = rezolvare(i);
  32.             v.push(rez);
  33.         }
  34.         else if(s[i] == ')')
  35.         {
  36.             int mt = 0;
  37.             while(!v.empty())
  38.             {
  39.                 mt += v.top();
  40.                 v.pop();
  41.             }
  42.             return mt;
  43.         }
  44.     }
  45.  
  46.  
  47.     int rezultat = 0;
  48.     while(!v.empty())
  49.     {
  50.         rezultat += v.top();
  51.         v.pop();
  52.     }
  53.     return rezultat;
  54. }
  55.  
  56. int main()
  57. {
  58.     getline(fin, s);
  59.     m['H'] = 1;
  60.     m['C'] = 12;
  61.     m['O'] = 16;
  62.  
  63.     int i = 0;
  64.     fout << rezolvare(i);
  65.  
  66.     return 0;
  67. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement