Pagini recente » Cod sursa (job #1756522) | Cod sursa (job #1691804) | Cod sursa (job #2542930) | Cod sursa (job #749404) | Cod sursa (job #2870456)
#include <fstream>
using namespace std;
ifstream cin("evaluare.in");
ofstream cout("evaluare.out");
string s;
int last = 0;
long long doOp(char semn, long long a, long long b);
long long solveForFirstRank();
long long solveForSecondRank();
long long findNum();
int main()
{
cin >> s;
long long ans;
ans = solveForFirstRank();
cout << ans;
return 0;
}
long long doOp(char semn, long long a, long long b){
if(semn == '+') a += b;
if(semn == '-') a -= b;
if(semn == '*')a *= b;
if(semn == '/') a/= b;
return a;
}
long long solveForFirstRank()
{
long long curr = solveForSecondRank();
while(last < s.size() && (s[last] == '+' || s[last] == '-')){
char ch = s[last];
last++;
curr = doOp(ch, curr, solveForSecondRank());
}
last++;
return curr;
}
long long solveForSecondRank()
{
long long curr = findNum();
while(last < s.size() && (s[last] == '*' || s[last] == '/')){
char ch = s[last];
last++;
curr = doOp(ch, curr, findNum());
}
return curr;
}
long long findNum()
{
long long curr = 0;
while(last < s.size() && s[last] >= '0' && s[last] <= '9'){
curr *= 10;
curr += (s[last++] - '0');
}
if(s[last] == '('){
last++;
curr = solveForFirstRank();
}
return curr;
}