Pagini recente » Istoria paginii runda/sunt_o_bestie_adevarata | Cod sursa (job #991424) | sdfdsf | Cod sursa (job #2795855) | Cod sursa (job #1077813)
#include <fstream>
//#include <iostream>
using namespace std;
ifstream cin( "evaluare.in" );
ofstream cout( "evaluare.out" );
char s[ 100001 ], *p;
int termen();
int factor();
int evaluare()
{
int t;
t = termen();
while ( *p == '+' || *p == '-' )
if ( *p == '+' )
{
p++;
t += termen();
}
else
{
p++;
t-= termen();
}
return t;
}
int termen()
{
int t;
t = factor();
while ( *p == '*' || *p == '/' )
if ( *p == '*' )
{
p++;
t *= factor();
}
else
{
p++;
t /= factor();
}
return t;
}
int factor()
{
int t = 0;
if ( *p == '(' )
{
p++;
t = evaluare();
p++;
}
else while ( '0' <= *p && *p <= '9' )
{
t = t * 10 + *p - '0';
p++;
}
return t;
}
int main()
{
cin >> s;
p = s;
cout << evaluare();
return 0;
}