Pagini recente » Cod sursa (job #1425431) | Cod sursa (job #477654) | Cod sursa (job #1073837) | Cod sursa (job #1779930) | Cod sursa (job #1333290)
#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();
}
if( *p == '-' )
{
*p++;
r -= termen();
}
}
return r;
}
long long termen()
{
long long r = factor();
while( *p == '*' || *p == '/' )
{
if( *p == '*' )
{
*p++;
r *= factor();
}
if( *p == '/' )
{
*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;
}