Pagini recente » Cod sursa (job #201126) | Cod sursa (job #1665749) | Cod sursa (job #2279574) | Cod sursa (job #2672731) | Cod sursa (job #713709)
Cod sursa(job #713709)
#include <cstdio>
#include <cstring>
#define nMax 100010
using namespace std;
char a[nMax];
int n;
int i;
int ord1();
int ord2();
int eval();
int ord1()
{
int x = ord2();
while (a[i] == '+' || a[i] == '-'){
if (a[i] == '+'){
++ i;
x += ord2 ();
}
if (a[i] == '-'){
++ i;
x -= ord2 ();
}
}
return x;
}
int ord2()
{
int x = eval();
while (a[i] == '*' || a[i] == '/'){
if (a[i] == '*'){
++ i;
x *= eval ();
}
if (a[i] == '/'){
++ i;
x /= eval ();
}
}
return x;
}
int eval()
{
int x = 0;
if (a[i] == '('){
++ i;
x = ord1();
++ i;
return x;
}
while (a[i] >= '0' && a[i] <= '9'){
x = x * 10 + a[i] - '0';
++ i;
}
return x;
}
int main()
{
freopen ("evaluare.in", "r", stdin);
freopen ("evaluare.out", "w", stdout);
gets (a);
n = strlen (a);
printf ("%d\n", ord1());
return 0;
}