Pagini recente » Cod sursa (job #41880) | Cod sursa (job #1592675) | Cod sursa (job #2192476) | Cod sursa (job #3196073) | Cod sursa (job #2775056)
#include <stdio.h>
#include <ctype.h>
using namespace std;
FILE *fin, *fout;
int ch;
long long eval_term();
long long eval_fact();
long long eval_exp() {
long long sum = eval_term();
while ( ch == '+' || ch == '-' ) {
if ( ch == '+' ) {
ch = fgetc( fin );
sum += eval_term();
}
else {
ch = fgetc( fin );
sum -= eval_term();
}
}
return sum;
}
long long eval_term() {
long long prod = eval_fact();
while ( ch == '*' || ch == '/' ) {
if ( ch == '*' ) {
ch = fgetc( fin );
prod *= eval_fact();
}
else {
ch = fgetc( fin );
prod /= eval_fact();
}
}
return prod;
}
long long eval_fact() {
long long ans = 0;
if ( ch == '(' ) {
ch = fgetc( fin );
ans = eval_exp();
ch = fgetc( fin );
}
else {
while ( isdigit( ch ) ) {
ans = ans * 10 + ch - '0';
ch = fgetc( fin );
}
}
return ans;
}
int main() {
fin = fopen( "evaluare.in", "r" );
ch = fgetc( fin );
fout = fopen( "evaluare.out", "w" );
fprintf( fout, "%lld\n", eval_exp() );
fclose( fin );
fclose( fout );
return 0;
}