Pagini recente » Cod sursa (job #2097589) | Cod sursa (job #1259129) | Cod sursa (job #2902458) | Cod sursa (job #1853743) | Cod sursa (job #988047)
Cod sursa(job #988047)
#include <cstdio>
#include <cstring>
using namespace std;
const int NMAX = 100003;
char S[NMAX], *p = S + 1;
int sum_diference ();
int multiplicaiton_division ();
int sub_expression ();
int main () {
freopen ("evaluare.in", "r", stdin);
freopen ("evaluare.out", "w", stdout);
scanf ("%s", p);
printf ("%d", sum_diference ());
}
int sum_diference () {
int value = multiplicaiton_division (), _value;
while (*p == '+' || *p == '-')
if (*p == '+') {
++p;
_value = multiplicaiton_division ();
value += _value;
}
else
++p,
_value = multiplicaiton_division (),
value -= _value;
return value;
}
int multiplicaiton_division () {
int value = sub_expression (), _value;
while (*p == '*' || *p == '/')
if (*p == '*')
++p,
_value = sub_expression (),
value *= _value;
else
++p,
_value = sub_expression (),
value /= _value;
return value;
}
int sub_expression () {
int value = 0;
if (*p == '(') {
++p;
value = sum_diference ();
++p;
return value;
}
while ('0' <= *p && *p <= '9')
value *= 10,
value += *p - '0',
++p;
return value;
}