Pagini recente » Cod sursa (job #1838262) | Cod sursa (job #2290633) | Cod sursa (job #158853) | Cod sursa (job #1356302) | Cod sursa (job #156565)
Cod sursa(job #156565)
# include <stdio.h>
# include <vector>
using namespace std;
# define input "evaluare.in"
# define output "evaluare.out"
# define max 100001
char s[max];
long pos;
long eval();
long factor()
{
long ret = 0;
if(s[pos] == '(')
{
pos++;
ret = eval();
pos++;
}
else
while(s[pos] >= '0' && s[pos] <= '9')
{
ret=ret*10+s[pos]-'0';
pos++;
}
return ret;
}
long termen()
{
long ret = factor();
while(s[pos] == '*' || s[pos] == '/')
{
switch(s[pos])
{
case '*' :
pos++;
ret*=factor();
break;
case '/' :
pos++;
ret/=factor();
break;
}
}
return ret;
}
long eval()
{
long ret;
ret = termen();
while(s[pos] == '+' || s[pos] == '-')
{
switch(s[pos])
{
case '+':
pos++;
ret+=termen();
break;
case '-':
pos++;
ret-=termen();
break;
}
}
return ret;
}
int main()
{
freopen(input, "r", stdin);
freopen(output, "w", stdout);
scanf("%s",s);
printf("%ld",eval());
return 0;
}