Pagini recente » Cod sursa (job #1405306) | Cod sursa (job #845501) | Cod sursa (job #1744686) | Cod sursa (job #949075) | Cod sursa (job #301833)
Cod sursa(job #301833)
#include <cstdio>
int p;
char v[100010];
int eval(), termen(), factor();
int eval(){
int r = 0;
r = termen();
while( v[p] == '+' || v[p] == '-' )
if( v[p] == '+' ){p++; r+= termen();}
else {p++; r-= termen();}
return r;
}
int termen(){
int r = 0;
r = factor();
while( v[p] == '*' || v[p] == '/' )
if( v[p] == '*' ){ p++; r*= factor();}
else { p++; r/= factor();}
return r;
}
int factor(){
int r = 0;
if( v[p] == '('){
p++;
r = eval();
p++;
}
else
while( v[p] >= '0' && v[p] <= '9' )
r = r * 10 + v[p] - '0', p++;
return r;
}
int main(){
FILE *f = fopen("evaluare.in", "r");
FILE *g = fopen("evaluare.out", "w");
v[0] = ' '; p = 1;
fscanf(f,"%s", v + 1);
fprintf(g,"%d", eval());
fclose(f);
fclose(g);
return 0;
}