Pagini recente » Cod sursa (job #702066) | Cod sursa (job #1510616) | Cod sursa (job #660588) | Cod sursa (job #1842807) | Cod sursa (job #1779791)
#include <cstdio>
using namespace std;
int p=0;
char s[100002];
int expresie ();
int numar()
{
int ans = 0;
while (s[p] >= '0' && s[p] <= '9'){
ans = ans*10 + (s[p] - '0');
p ++;
}
return ans;
}
int factor ()
{
int ans = 0;
if (s[p] == '('){
p ++;
ans = expresie ();
p ++;
}
else {
ans = numar ();
}
return ans;
}
int termen ()
{
int ans = factor();
while (s[p] == '*' || s[p] == '/'){
p ++;
if (s[p-1] == '*'){
ans *= factor ();
}
else{
ans /= factor ();
}
}
return ans;
}
int expresie ()
{
int ans = termen();
while (s[p] == '+' || s[p] == '-'){
p ++;
if (s[p-1] == '+'){
ans += termen ();
}
else{
ans -= termen ();
}
}
return ans;
}
int main ()
{
freopen ("evaluare.in", "r", stdin);
freopen ("evaluare.out", "w", stdout);
scanf ("%s", s);
printf ("%d", expresie ());
return 0;
}