Pagini recente » Borderou de evaluare (job #2422092) | Cod sursa (job #2427157)
#include <bits/stdc++.h>
#define NMAX 100000
using namespace std;
char s[NMAX], *p = s;
int eval();
int factor( ) {
int nr = 0;
if( *p == '(' ) {
p ++;
nr = eval();
p ++;
return nr;
}
else {
while( *p >= '0' && *p <= '9' ) {
nr = nr * 10 + (*p - '0');
p ++;
}
return nr;
}
}
int termen( ) {
int r = factor();
while( *p == '*' || *p == '/' ) {
if( *p == '*' )
p ++, r = r * factor();
else
p ++, r = r / factor();
}
return r;
}
int eval( ) {
int r = termen();
while( *p == '+' || *p == '-' ) {
if( *p == '+' )
p ++, r += termen();
else
p ++, r -= termen();
}
return r;
}
int main() {
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
fin>>s;
fout<<eval();
return 0;
}