Pagini recente » Cod sursa (job #1951003) | Cod sursa (job #1555204) | Cod sursa (job #824889) | Cod sursa (job #1019376) | Cod sursa (job #2529622)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in ("evaluare.in");
ofstream out ("evaluare.out");
const int NM = 100001;
char s[NM] ;
int p ;
int expresie();
int factor();
int termen();
int expresie()
{
int sum = termen() ;
while ( s[p] == '+' || s[p] == '-' )
{
if ( s[p] == '+' )
{
p++ ;
sum += termen () ;
}
else
{
p++ ;
sum -= termen() ;
}
}
return sum ;
}
int termen ()
{
int prod = factor () ;
while ( s[p] == '*' || s[p] == '/' )
{
if ( s[p] == '*' )
{
p++ ;
prod *= factor() ;
}
else
{
p++ ;
prod /= factor() ;
}
}
return prod ;
}
int factor()
{
int val = 0, semn = 1 ;
while ( s[p] == '-' )
{
p++ ;
semn = -semn ;
}
if ( s[p] == '(' )
{
p++ ;
val = expresie() ;
p++ ;
return semn * val ;
}
while ( s[p] >= '0' && s[p] <= '9' )
{
val = val * 10 + (s[p] - '0' ) ;
p++ ;
}
return semn * val ;
}
int main()
{
in >> s;
out << expresie() ;
return 0;
}