Pagini recente » Cod sursa (job #2349558) | Cod sursa (job #931616) | Cod sursa (job #257126) | Cod sursa (job #380299) | Cod sursa (job #2720054)
#include <fstream>
#include <algorithm>
#define vl p < S . size ()
#define y S [p]
using namespace std;
ifstream f ("evaluare.in");
ofstream g ("evaluare.out");
int p , E () , T () , F ();
string S;
int E (){
int x = T ();
while (y == '+' || y == '-'){
++ p;
if (S [p - 1] == '+')
x += T ();
else
x -= T ();
}
return x;
}
int T (){
int x = F ();
while (y == '*' || y == '/'){
++ p;
if (S [p - 1] == '*')
x *= F ();
else
x /= F ();
}
return x;
}
int F (){
int x = 0;
if (isdigit (S [p])){
while (vl && isdigit (S [p])){
x = x * 10 + (S [p] - '0');
++ p;
}
return x;
}
if (S [p] == '(')
++ p;
x = E ();
++ p;
return x;
}
int main (){
f >> S;
g << E ();
return 0;
}