Pagini recente » Cod sursa (job #354457) | Argumentatia | Cod sursa (job #335822) | Cod sursa (job #2897198) | Cod sursa (job #2792109)
#include <iostream>
#include <string>
#include <fstream>
#include <ctype.h>
using namespace std;
const int LEN_MAX = 1e5;
char input_exp[1 + LEN_MAX];
int solve_nr ( char* &str ) {
int result = 0;
while ( isdigit ( *str ) ) {
result = result * 10 + ( *str - '0' );
str ++;
}
///printf ( "NUMBER = %d ", result );
return result;
}
int solve_exp ( char* &str );
int solve_factor ( char* &str ) {
int result;
if ( *str == '(' ) {
str ++;
result = solve_exp ( str );
str ++;
}
else
result = solve_nr ( str );
///printf ( "FACTOR = %d ", result );
return result;
}
int solve_term ( char* &str ) {
int result = solve_factor ( str );
while ( *str == '*' || *str == '/' ) {
if ( *str == '*' ) {
str ++;
result *= solve_factor ( str );
}
else {
str ++;
result /= solve_factor ( str );
}
}
///printf ( "TERM = %d ", result );
return result;
}
int solve_exp ( char* &str ) {
int result = solve_term ( str );
while ( *str == '+' || *str == '-' ){
if ( *str == '+' ) {
str ++;
result += solve_term ( str );
}
else {
str ++;
result -= solve_term ( str );
}
}
///printf ( "EXP = %d ", result );
return result;
}
ifstream fin ( "evaluare.in" );
ofstream fout ( "evaluare.out" );
int main()
{
fin >> input_exp;
char *p = input_exp;
fout << solve_exp ( p );
return 0;
}