Pagini recente » Cod sursa (job #218628) | Cod sursa (job #1026414) | Cod sursa (job #3202992) | Cod sursa (job #42298) | Cod sursa (job #2193238)
#include <iostream>
#include <fstream>
#include <string>
#define maxL 100002
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
char S[maxL], *p;
long termen();
long factor();
long eval () {
long r = termen();
while (*p == '+' or *p == '-') {
switch (*p) {
case '+':
++p;
r += termen();
break;
case '-':
++p;
r -= termen();
break;
}
}
return r;
}
long termen () {
long r = factor();
while (*p == '*' or *p == '/') {
switch (*p) {
case '*' :
++p;
r *= factor();
break;
case '/' :
++p;
r /= factor();
break;
}
}
return r;
}
long factor () {
long r = 0;
if (*p == '(') {
++p;
r = eval();
++p;
}
else {
while (*p >= '0' and *p <= '9') {
r = r*10 + *p - '0';
++p;
}
}
return r;
}
int main () {
fin.getline(S, maxL);
p = S;
fout << eval();
return 0;
}