Pagini recente » Cod sursa (job #1060196) | Cod sursa (job #1074132) | Cod sursa (job #1403148) | Cod sursa (job #916796) | Cod sursa (job #793230)
Cod sursa(job #793230)
#include <cstdio>
#include <ctype.h>
int i;
char a[100001];
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*=factor();
}
else{
i++;
k/=factor();
}
}
return k;
}
int factor()
{
int k = 0 ;
if(a[i] == '(')
{
i++;
k = exp();
i++;
}
while(isdigit(a[i]))
{
int c = a[i]-'0';
k = k * 10 + c;
++i;
}
return k;
}
int main()
{
freopen("evaluare.in", "r" , stdin);
freopen("evaluare.out","w",stdout);
gets(a);
printf("%d", exp());
return 0;
}