- 0228c班开学考
t5怎么写
- 2025-2-28 20:27:53 @
40pts
1 comments
-
C24kongxiangtai LV 7 @ 2025-3-3 13:27:30
#include <bits/stdc++.h> #define ll long long using namespace std; const int N = 1e5 + 10; const int INF = 0x3f3f3f3f; stack <int> number; stack <char> symbol; string str; int len, num; bool flag = false; int bank(char s) { if (s == '+' or s == '-') return 10; else if (s == '*' or s == '/') return 20; else if (s == '^') return 30; return 0; } void calc() { int ans; int b = number.top(); number.pop(); int a = number.top(); number.pop(); char s = symbol.top(); symbol.pop(); switch(s) { case '+': { ans = a + b; break; } case '-': { ans = a - b; break; } case '*': { ans = a * b; break; } case '/': { ans = a / b; break; } case '^': { ans = pow(a, b); break; } } number.push(ans); } void printtt() { int main() { cin >> str; len = str.size(); for (int i = 0; i < len; i++) { if (str[i] >= '0' and str[i] <= '9') { num *= 10, num += str[i] - '0'; flag = true; } else { if (flag) { number.push(num); num = 0, flag = false; } if (str[i] == '(') symbol.push(str[i]); else if (str[i] == ')') { while (symbol.top() != '(') calc(); symbol.pop(); } else { while (!symbol.empty() and bank(symbol.top()) >= bank(str[i])) calc(); symbol.push(str[i]); } } } if (flag) number.push(num); while (!symbol.empty()) calc(); cout << number.top(); return 0; }
👎 3
- 1