Pagini recente » Cod sursa (job #2619597) | Cod sursa (job #85473) | Cod sursa (job #2331577) | Cod sursa (job #794270) | Cod sursa (job #1090875)
#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();
}