Pagini recente » Cod sursa (job #903942) | Cod sursa (job #2317795) | Cod sursa (job #1589152) | Cod sursa (job #716399) | Cod sursa (job #2175293)
#include <bits/stdc++.h>
using namespace std;
char s[100001] ;
int i ;
ifstream fin("evaluare.in") ;
ofstream fout("evaluare.out") ;
int termen() ;
int factor() ;
int eval()
{
int r = termen() ;
while ( s[i] == '+' || s[i] == '-' )
{
if ( s[i] == '+' )
{
i++ ;
r = r+termen() ;
}
else
{
i++ ;
r = r-termen() ;
}
}
return r;
}
int termen()
{
int r = factor() ;
while ( s[i] == '*' || s[i] == '/' )
{
if ( s[i] == '*' )
{
i++ ;
r = r*factor() ;
}
else
{
i++ ;
r = r/factor() ;
}
}
return r;
}
int factor()
{
int r=0;
if ( s[i] == '(' )
{
i++ ;
r = eval() ;
i++ ;
}
else
{
while ( s[i] >= '0' && s[i] <= '9' )
{
r = r*10 + s[i] - '0' ;
i++ ;
}
}
return r;
}
int main()
{
fin >> s ;
i = 0 ;
fout << eval() ;
}