mipt024.cpp
来自「El Judge MIPT solutions to some easy pro」· C++ 代码 · 共 54 行
CPP
54 行
/*
Alfonso2 Peterssen
18 - 7 - 2008
MIPT #024 "Arithmetica 1.0"
*/
#include <iostream>
#include <algorithm>
using namespace std;
int pos;
string expr;
bool sign( char ch ) {
return ch == '+' || ch == '-' || ch == '*';
}
int GetExpr();
int GetTerm() {
int result = 0;
if ( expr[pos] == '(' ) {
pos++; // skip (
result = GetExpr();
pos++; // skip )
} else
while ( pos < expr.size() && expr[pos] != ')' && !sign( expr[pos] ) ) {
result = result * 10 + expr[pos] - '0';
pos++;
}
return result;
}
int GetExpr() {
int result = GetTerm();
for (;;)
if ( pos < expr.size() && sign( expr[pos] ) ) {
pos++;
if ( expr[pos-1] == '+' ) result += GetTerm();
if ( expr[pos-1] == '-' ) result -= GetTerm();
if ( expr[pos-1] == '*' ) result *= GetTerm();
} else
break;
return result;
}
int main() {
cin >> expr;
cout << GetExpr() << endl;
return 0;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?