Pagini recente » Cod sursa (job #642848) | Lot 2017 | Cod sursa (job #2425878) | Cod sursa (job #392695) | Cod sursa (job #2727764)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin ("evaluare.in");
ofstream fout ("evaluare.out");
char sir[100005];
int i;
int eval ();
int termen ();
int factor ();
int eval () {
int ans = termen();
while(sir[i] == '+' || sir[i] == '-') {
if(sir[i] == '+') {
i += 1;
ans += termen();
} else if(sir[i] == '-') {
i += 1;
ans -= termen();
}
}
return ans;
}
int termen() {
int ans = factor();
while(sir[i] == '*' || sir[i] == '/') {
if(sir[i] == '*') {
i += 1;
ans *= factor();
} else if(sir[i] == '/') {
i += 1;
ans /= factor();
}
}
return ans;
}
int factor() {
int ans = 0;
if(sir[i] == '(') {
i += 1;
ans = eval();
i += 1;
} else {
while(sir[i] >= '0' && sir[i] <= '9') {
ans = ans * 10 + (int)sir[i] - '0';
i += 1;
}
}
return ans;
}
int main()
{
fin >> sir;
fout << eval();
return 0;
}