Pagini recente » Cod sursa (job #2482008) | Cod sursa (job #2916210) | Cod sursa (job #2677491) | Cod sursa (job #1845160) | Cod sursa (job #2812506)
/// evaluare - infoarena
#include <fstream>
using namespace std;
fstream f, g;
char s[10002];
int p;
int F();
int T();
int E();
int main()
{
f.open("evaluare.in", ios::in);
g.open("evaluare.out", ios::out);
f >> s;
g << E();
return 0;
}
int E()
{
int r = T();
while( s[p] == '+' or s[p] == '-' )
{
if(s[p] == '+' ) ++p, r+=T();
else ++p, r-=T();
}
return r;
}
int T()
{
int f = F();
while( s[p] == '*' or s[p] == '/' )
{
if( s[p] == '*' ) ++p, f *= F();
else ++p, f/=F();
}
return f;
}
int F()
{
int r;
if( s[p] == '(' )
{
++p;
r = E();
p++;
}
else
{
r=0;
while( isdigit(s[p]) )
{
r = r*10 + (s[p] - '0');
++p;
}
}
return r;
}