Pagini recente » Cod sursa (job #1115713) | Cod sursa (job #3286246) | Cod sursa (job #1245739) | Cod sursa (job #1580190) | Cod sursa (job #870173)
Cod sursa(job #870173)
#include <fstream>
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
int i;
int eval(), termen(), factor();
string S;
int eval() {
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] == '(') {//subexpresie
++i;
r = eval();
++i;
}else { //numar
while ('0' <= S[i] && S[i] <= '9') {
r = r * 10 + S[i] - '0';
++i;//trecem la urmatoarea posibila cifra a nr-lui
}
}
return r;
}
int main() {
getline(fin, S);
fout << eval();
fin.close();
fout.close();
return 0;
}