Pagini recente » Cod sursa (job #481642) | Cod sursa (job #2267108) | Cod sursa (job #1087000) | Cod sursa (job #2493000) | Cod sursa (job #1307304)
#include <fstream>
#include <string>
using namespace std;
const char iname[] = "evaluare.in";
const char oname[] = "evaluare.out";
int Step = 0, Eval();
string S;
int Get_Number()
{
int number = 0;
if(S[Step] == '(') {
++Step;
number = Eval();
++Step;
}
else while(S[Step] >= '0' && S[Step] <= '9') number = number * 10 + S[Step] -'0', ++Step;
return number;
}
int P_Operation()
{
int number = Get_Number();
while(S[Step] == '*' || S[Step] == '/')
switch(S[Step]) {
case '*' : { ++Step; number *= Get_Number(); break; }
case '/' : { ++Step; number /= Get_Number(); break; }
}
return number;
}
int Eval()
{
int number = P_Operation();
while(S[Step] == '+' || S[Step] == '-')
switch(S[Step]) {
case '+' : { ++Step; number += P_Operation(); break; }
case '-' : { ++Step; number -= P_Operation(); break; }
}
return number;
}
int main()
{
ifstream in( iname ); ofstream out( oname );
in >> S;
out << Eval();
}