Pagini recente » Cod sursa (job #2686193) | Cod sursa (job #625308) | Cod sursa (job #3275702) | Cod sursa (job #3145463) | Cod sursa (job #2939155)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
int pointer = 0;
string s;
int expresie();
int termen();
int factor();
int numar();
inline int expresie()
{
int v = termen();
while(s[pointer] == '+' || s[pointer] == '-')
{
if(s[pointer] == '+')
pointer++, v += termen();
else
pointer++, v -= termen();
}
return v;
}
inline int termen()
{
int v = factor();
while(s[pointer] == '*' || s[pointer] == '/')
{
if(s[pointer] == '*')
pointer++, v = v * factor();
else
pointer++, v = v / factor();
}
return v;
}
inline int factor()
{
int v;
if(s[pointer] == '(')
pointer++, v = expresie(), pointer++;
else
v = numar();
return v;
}
inline int numar()
{
int v = 0;
while(s[pointer] >= '0' && s[pointer] <= '9')
{
v = v*10 + (s[pointer] - '0');
pointer++;
}
return v;
}
int main()
{
fin >> s;
fout << expresie();
}