Pagini recente » Cod sursa (job #1981193) | Cod sursa (job #1382881) | Cod sursa (job #2388058) | Cod sursa (job #1328941) | Cod sursa (job #748028)
Cod sursa(job #748028)
#include<stdio.h>
char v[1000005];
int p;
int factor();
int termen()
{
int rez = factor();
while(v[p] == '*' || v[p] == '/') {
if(v[p] == '*') {
p ++;
rez *= factor();
}
else {
p++;
rez /= factor();
}
}
return rez;
}
int expresie()
{
int s = termen();
while(v[p] == '+' || v[p] == '-') {
if(v[p] == '+') {
p ++;
s += termen();
} else {
p ++;
s -= termen();
}
}
return s;
}
int factor()
{
int semn = 1, val = 0;
while(v[p] == '-'){
semn -= semn;
p++;
}
if(v[p] == '('){
p ++;
val = expresie();
p ++;
return semn * val;
}
while(v[p] >= '0' && v[p] <= '9') {
val = val * 10 + v[p] - '0';
p++;
}
return semn * val;
}
int main()
{
freopen("evaluare.in","r",stdin);
freopen("evaluare.out","w",stdout);
gets(v);
printf("%d\n", expresie());
return 0;
}