#include <iostream> #include <string> using namespace std; int lips(string input, int now) { int sum = 0; if (input[now] == '('){ sum = lips(input, now + 1); } else if (input[now] == '+') { sum = (input[now+1] - '0'); for(int i = now+2; input[i] != ')'; i++){ if (input[i] == '('){ sum += lips(input, i + 1); while(input[i] !=')') i++; continue; } sum += (input[i]-'0'); } } else if (input[now] == '-') { sum = (input[now+1] - '0'); for(int i = now+2; input[i] != ')'; i++){ if (input[i] == '('){ sum -= lips(input, i + 1); while(input[i] !=')') i++; continue; } sum -= (input[i]-'0'); } } else if (input[now] == '*') { sum = (input[now+1] - '0'); for(int i = now+2; input[i] != ')'; i++){ if (input[i] == '('){ sum *= lips(input, i + 1); while(input[i] !=')') i++; continue; } sum *= (input[i]-'0'); } } else if (input[now] == '/') { sum = (input[now+1] - '0'); for(int i = now+2; input[i] != ')'; i++){ if (input[i] == '('){ sum /= lips(input, i + 1); while(input[i] !=')') i++; continue; } sum /= (input[i]-'0'); } } return sum; } int main(void) { string s, b; getline(cin, s); for (int i = 0; i < s.length(); i++) { if (s[i] != ' ') b += s[i]; } cout << lips(b, 0) << endl; } |
Double click to view unformatted code.