Pagini recente » Cod sursa (job #1028160) | Cod sursa (job #3187020) | Cod sursa (job #1202902) | Cod sursa (job #971987) | Cod sursa (job #161923)
Cod sursa(job #161923)
#include <stdio.h>
char S[100005];
int p, ans;
int termen();
int factor();
int expresie();
int expresie()
{
int x = termen();
while (S[p] == '+' || S[p] == '-')
{
if (S[p] == '+')
{
++p;
x += termen();
}
else
{
++p;
x -= termen();
}
}
return x;
}
int termen()
{
int x = factor();
while (S[p] == '*' || S[p] == '/')
{
if (S[p] == '*')
{
++p;
x *= factor();
}
else
{
++p;
x /= factor();
}
}
return x;
}
int factor()
{
int x = 0;
if (S[p] == '(')
{
++p;
x = expresie();
++p;
}
else
{
while (S[p] <= '9' && S[p] >= '0')
{
x = x*10+S[p]-'0';
++p;
}
}
return x;
}
void read()
{
freopen("evaluare.in", "r", stdin);
scanf("%s", &S);
}
void write()
{
freopen("evaluare.out", "w", stdout);
printf("%d\n", ans);
}
void solve()
{
ans = expresie();
}
int main()
{
read();
solve();
write();
return 0;
}