Pagini recente » Cod sursa (job #2517948) | Cod sursa (job #479455) | Cod sursa (job #1349007) | Cod sursa (job #1965133) | Cod sursa (job #913193)
Cod sursa(job #913193)
#include <cstdio>
using namespace std;
char a[100005];
int i;
int exp();
int termen();
int factor();
int exp()
{
int k = termen();
while (a[i] == '+' || a[i] == '-')
{
if (a[i] == '+')
{
i++;
k += termen();
}
else
{
i++;
k -= termen();
}
}
return k;
}
int termen()
{
int k = factor();
while (a[i] == '*' || a[i] == '/')
{
if (a[i] == '*')
{
i++;
k *= termen();
}
else
{
i++;
k /= termen();
}
}
return k;
}
int factor()
{
int k = 0;
if (a[i] == '(')
{
i++;
k = exp();
i++;
}
else
{
while (a[i] >= '0' && a[i] <= '9')
{
k = k * 10 + a[i] - '0';
i++;
}
}
return k;
}
int main()
{
freopen("evaluare.in", "r", stdin);
freopen("evaluare.out", "w", stdout);
gets(a);
printf("%d\n", exp());
return 0;
}