Pagini recente » Cod sursa (job #442105) | Cod sursa (job #1418923) | Cod sursa (job #66978) | Cod sursa (job #3275495) | Cod sursa (job #2739246)
#include <bits/stdc++.h>
using namespace std;
ifstream fin( "evaluare.in" );
ofstream fout( "evaluare.out" );
const int NMAX = 1e5;
char a[NMAX + 2];
int p;
int expresie();
int termen();
int factor();
int expresie() {
int x = termen();
while( a[p] == '+' || a[p] == '-' ) {
if( a[p] == '+' ) {
++p;
x += termen();
}
else {
++p;
x -= termen();
}
}
return x;
}
int termen() {
int x = factor();
while( a[p] == '*' || a[p] == '/' ) {
if( a[p] == '*' ) {
++p;
x *= termen();
}
else {
++p;
x /= termen();
}
}
return x;
}
int factor() {
int semn = 1;
while( a[p] == '-' ) {
++p;
semn = -semn;
}
if( a[p] == '(' ) {
++p;
int x = expresie();
++p;
return x * semn;
}
else {
int nr = 0;
while( isdigit(a[p]) )
nr = nr * 10 + (a[p++] - '0');
return nr * semn;
}
}
int main() {
fin >> (1 + a);
p = 1;
fout << expresie();
return 0;
}