Pagini recente » Cod sursa (job #1221605) | Cod sursa (job #2727140) | Cod sursa (job #2942599) | Cod sursa (job #2877530) | Cod sursa (job #2253402)
#include <bits/stdc++.h>
#define NMAX 100001
using namespace std;
ifstream f ("evaluare.in") ;
ofstream g ("evaluare.out");
char s[NMAX] ;
int p = 0;
int eval() ;
int termen() ;
int factor() ;
int eval()
{
int r = termen() ;
if (s[p] == '*')
{
p ++;
r *= termen();
}
if(s[p] == '/')
{
p ++ ;
r /= termen() ;
}
return r;
}
int termen()
{
int r = factor() ;
if (s[p] == '+')
{p ++ ;
r += factor() ;}
if(s[p] == '-')
{
p++;
r -= factor() ;
}
return r ;
}
int factor()
{
int r = 0 ;
if (s[p] == '(')
{
p ++ ;
r = eval() ;
p++ ;
}
else
{
while (isdigit(s[p]))
{r = r * 10 + (s[p] - '0') ;
p ++ ;}
}
return r ;
}
int main()
{
f.getline(s , 100001);
g << eval() ;
}