Pagini recente » Cod sursa (job #1399944) | Cod sursa (job #2046428) | Cod sursa (job #890794) | Cod sursa (job #2279315) | Cod sursa (job #531895)
Cod sursa(job #531895)
#include<stdio.h>
#include<string>
#define i64 long long
FILE*f=fopen("evaluare.in","r");
FILE*g=fopen("evaluare.out","w");
int i = 1,N;
char A[100010];
i64 termen();
i64 factor();
i64 evaluare () {
i64 R = termen();
while ( A[i] == '+' || A[i] == '-' ){
if ( A[i] == '+' ){
++i;
R += termen ();
}
else{
++i;
R -= termen();
}
}
return R;
}
i64 termen () {
i64 R = factor();
while ( A[i] == '*' || A[i] == '/' ){
if ( A[i] == '*' ){
++i;
R *= factor();
}
else{
++i;
R /= factor();
}
}
return R;
}
i64 factor () {
i64 R = 0;
if ( A[i] == '(' ){
++i;
R = evaluare();
++i;
}
else{
while ( A[i] >= '0' && A[i] <= '9' ){
R = R * 10 + A[i] - '0' ;
++i;
}
}
return R;
}
int main () {
fscanf(f,"%s",A+1);
N = strlen(A+1);
fprintf(g,"%lld\n",evaluare() );
fclose(f);
fclose(g);
return 0;
}