Pagini recente » Cod sursa (job #3210282) | Cod sursa (job #2789329) | Cod sursa (job #1408759) | Cod sursa (job #2601121) | Cod sursa (job #2727757)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin ("evaluare.in");
ofstream fout ("evaluare.out");
char sir[100005];
int eval (int &i);
int termen (int &i);
int factor (int &i);
int eval (int &i) {
int ans = termen(i);
while(sir[i] == '+' || sir[i] == '-') {
if(sir[i] == '+') {
i += 1;
ans += termen(i);
} else if(sir[i] == '-') {
i += 1;
ans -= termen(i);
}
}
return ans;
}
int termen(int &i) {
int ans = factor(i);
while(sir[i] == '*' || sir[i] == '/') {
if(sir[i] == '*') {
i += 1;
ans *= termen(i);
} else if(sir[i] == '/') {
i += 1;
ans /= termen(i);
}
}
return ans;
}
int factor(int &i) {
int ans = 0;
if(sir[i] == '(') {
i += 1;
ans = eval(i);
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;
int i = 0; fout << eval(i);
return 0;
}