Pagini recente » Cod sursa (job #1848887) | Istoria paginii runda/1234567891011/clasament | Cod sursa (job #916039) | Cod sursa (job #952261) | Cod sursa (job #2847651)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ( "evaluare.in" );
ofstream fout ( "evaluare.out" );
int i;
char s [ 1005 ];
int Evaluare ();
int Termen ();
int Factor ();
int Evaluare () {
int r = Termen ();
while ( s [ i ] == '+' || s [ i ] == '-' ) {
if ( s [ i ] == '+' ) {
i ++;
r += Termen ();
}
else {
i ++;
r -= Termen ();
}
}
return r;
}
int Termen () {
int r = Factor ();
while ( s [ i ] == '*' || s [ i ] == '/' ) {
if ( s [ i ] == '*' ) {
i ++;
r *= Factor ();
}
else {
i ++;
r /= Factor ();
}
}
return r;
}
int Factor () {
int r = 0;
if ( s [ i ] == '(' ) {
i ++;
r = Evaluare ();
i ++;
}
else {
while ( isdigit ( s [ i ] ) == true ) {
r = r * 10 + s [ i ] - '0';
i ++;
}
}
return r;
}
int main() {
fin >> s;
fout << Evaluare ();
return 0;
}