Pagini recente » Cod sursa (job #2167479) | Cod sursa (job #1391996) | Cod sursa (job #1860584) | Cod sursa (job #2976756) | Cod sursa (job #1327822)
#include <fstream>
using namespace std;
ifstream in ("evaluare.in");
ofstream out ("evaluare.out");
const int NMAX = 100000;
char c[NMAX+3];
int ind = 0;
int termen();
int eval(){
int r = termen();
while( c[ind] == '+' || c[ind] == '-' ) {
if( c[ind] == '+' ) {
++ind;
r += termen();
}
if( c[ind] == '-' ) {
++ind;
r -= termen();
}
}
return r;
}
int factor() {
int r = 0;
if( c[ind] == '(' ) {
++ind;
r = eval();
++ind;
}
else {
while( c[ind] <='9' && c[ind] >='0' ) {
r = r*10 + c[ind]-'0';
++ind;
}
}
return r;
}
int termen() {
int r = factor();
while( c[ind] == '*' || c[ind] == '/' ){
if( c[ind] == '*' ) {
++ind;
r *= factor();
}
if( c[ind] == '/' ) {
++ind;
r /= factor();
}
}
return r;
}
int main() {
in >> c;
out << eval() << '\n';
return 0;
}