Pagini recente » Cod sursa (job #1291821) | Clasament remediere | simulare_oji2015 | Cod sursa (job #1999051) | Cod sursa (job #2674508)
#include <bits/stdc++.h>
using namespace std;
ifstream in("evaluare.in");
ofstream out("evaluare.out");
string s;
int i = 0;
inline long long factor();
inline long long termen();
inline long long expresie();
long long factor()
{
int rez = 0;
while(s[i] >= '0' && s[i] <= '9')
rez *= 10, rez += s[i] - '0',i++;
return rez;
}
long long termen()
{
int rez = 0;
rez = factor();
while(s[i] == '*' || s[i] == '/')
{
if(s[i] == '*')
{
if(s[++i] == '(')
rez *= expresie();
else
rez *= factor();
}
else
if(s[i] == '/')
{
if(s[++i] == '(')
rez *= expresie();
else
rez /= factor();
}
}
return rez;
}
long long expresie()
{
long long rez = 0;
if(s[i] == '(')
i++;
rez += termen();
while(s[i] == '+' || s[i] == '-')
{
if(s[i] == '+')
++i, rez += termen();
else
if(s[i] == '-')
++i, rez -= termen();
}
if(s[i] == ')')
i++;
return rez;
}
int main()
{
in >> s;
out << expresie();
return 0;
}