Pagini recente » Cod sursa (job #3271289) | Cod sursa (job #2610618) | Cod sursa (job #2456241) | Cod sursa (job #2515518) | Cod sursa (job #1478874)
#include <fstream>
using namespace std;
ifstream in("evaluare.in");
ofstream out("evaluare.out");
string line;
int i = 0;
int factor(void);
int summand(void);
int expression(void);
int expression(void){
int value = 0;
value += summand();
while (line[i]=='+' || line[i]=='-'){
i++;
if (line[i-1]=='+')value += summand();
else value -= summand();
}
return value;
}
int summand(void){
int value = 1;
value *= factor();
while (line[i]=='*' || line[i]=='/'){
i++;
if (line[i-1]=='*')value *= factor();
else value /= factor();
}
return value;
}
int factor(void){
int value = 0;
if (line[i]=='('){
i++;
value = expression();
i++;
}
else{
while (i<line.length() && line[i]<='9' && line[i]>='0'){
value = value*10 + line[i]- '0';
i++;
}
}
return value;
}
int main(void){
in >> line;
out << expression();
return 0;
}