Pagini recente » Cod sursa (job #662221) | Cod sursa (job #2648818) | Cod sursa (job #2534745) | Cod sursa (job #1492625) | Cod sursa (job #2775053)
#include <stdio.h>
#include <ctype.h>
using namespace std;
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( stdin );
sum += eval_term();
}
else {
ch = fgetc( stdin );
sum -= eval_term();
}
}
return sum;
}
long long eval_term() {
long long prod = eval_fact();
while ( ch == '*' || ch == '/' ) {
if ( ch == '*' ) {
ch = fgetc( stdin );
prod *= eval_fact();
}
else {
ch = fgetc( stdin );
prod /= eval_fact();
}
}
return prod;
}
long long eval_fact() {
long long ans = 0;
if ( ch == '(' ) {
ch = fgetc( stdin );
ans = eval_exp();
ch = fgetc( stdin );
}
else {
while ( isdigit( ch ) ) {
ans = ans * 10 + ch - '0';
ch = fgetc( stdin );
}
}
return ans;
}
int main() {
ch = fgetc( stdin );
printf( "%lld\n", eval_exp() );
return 0;
}