Pagini recente » Cod sursa (job #934539) | Cod sursa (job #2588512) | Cod sursa (job #2324334) | Cod sursa (job #2767821) | Cod sursa (job #1090873)
#include <fstream>
#include <cstring>
using namespace std;
const int MAX_L = 100002;
int len, p;
char s[MAX_L];
long long expresie();
long long factor() {
long long ret = 0;
if(s[p] == '(') {
++p;
ret = expresie();
++p;
}
else while(p < len && s[p] >= '0' && s[p] <= '9')
ret = ret * 10 + s[p] - '0', ++p;
return ret;
}
long long termen() {
long long ret = 0;
ret = factor();
while(p < len && s[p] == '*' || s[p] == '/') {
++p;
if(s[p - 1] == '*')
ret *= factor();
else ret /= factor();
}
return ret;
}
long long expresie() {
long long ret = 0;
ret = termen();
while(p < len && s[p] == '+' || s[p] == '-') {
++p;
if(s[p - 1] == '+')
ret += termen();
else ret -= termen();
}
return ret;
}
int main() {
ifstream f("evaluare.in");
ofstream g("evaluare.out");
f >> s;
len = strlen(s);
g << expresie() << "\n";
f.close();
g.close();
}