Pagini recente » Cod sursa (job #2782594) | Cod sursa (job #2867823) | Cod sursa (job #1429234) | Cod sursa (job #439107) | Cod sursa (job #2374309)
#include <fstream>
#include <stdio.h>
#define N 100005
char s[N], *p = s ;
using namespace std ;
ifstream fin ( "evaluare.in" ) ;
ofstream fout ( "evaluare.out" ) ;
int termen() ;
int factor() ;
int eval()
{
int r = termen() ;
while ( *p == '+' || *p == '-' ){
switch ( *p ){
case '+' : ++p ; r += termen() ; break ;
case '-' : ++p ; r -= termen() ; break ;
}
}
return r ;
}
int termen()
{
int r = factor() ;
while ( *p == '*' || *p == '/' ) {
switch ( *p ) {
case '*' : ++p ; r *= factor() ; break ;
case '/' : ++p ; r /= factor() ; break ;
}
}
return r ;
}
int factor ()
{
int r = 0 ;
if ( *p == '(' ) {
++p ;
r = eval() ;
++p ;
}
else
{
while ( *p >= '0' && *p <= '9' ) {
r = r * 10 + ( *p - '0' ) ;
++ p ;
}
}
return r ;
}
int main()
{
fin >> s ;
fout << eval() ;
}