Pagini recente » Cod sursa (job #2509129) | Cod sursa (job #2515570) | Cod sursa (job #501078) | Cod sursa (job #995566) | Cod sursa (job #1333286)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("evaluare.in");
ofstream out("evaluare.out");
const int MAX = 100000;
char S[MAX+1], *p = S;
long long termen();
long long factor();
long long evalueaza()
{
long long r = termen();
while( *p == '+' || *p == '-' )
{
if( *p == '+' )
{
++p;
r += termen();
}
else
{
++p;
r -= termen();
}
}
return r;
}
long long termen()
{
long long r = factor();
while( *p == '*' || *p == '/' )
{
if( *p == '*' )
{
p++;
r *= factor();
}
else
{
p++;
r /= factor();
}
}
return r;
}
long long factor()
{
long long r = 0;
if( *p == '(' )
{
p++;
r = evalueaza();
p++;
}
else
{
while( '0' <= *p && *p <= '9' )
{
r = r*10 + *p - '0';
*p++;
}
}
return r;
}
int main()
{
in>>S;
out<<evalueaza();
return 0;
}