Pagini recente » Cod sursa (job #2733518) | Cod sursa (job #14621) | Cod sursa (job #2656789) | Cod sursa (job #1454100) | Cod sursa (job #1003205)
#include <iostream>
#include <fstream>
using namespace std;
#define MAXS 100010
ifstream f("evaluare.in");
ofstream g("evaluare.out");
char s[MAXS], *p = s;
int termen();
int factor();
int eval() {
int nr = termen();
while (*p == '+' || *p == '-') {
switch (*p) {
case '+':
++p;
nr += termen();
break;
case '-':
++p;
nr += termen();
break;
}
}
return nr;
}
int termen() {
int nr = factor();
while (*p == '*' || *p == '/') {
switch (*p) {
case '*':
++p;
nr *= factor();
break;
case '/':
++p;
nr *= factor();
break;
}
}
return nr;
}
int factor() {
int nr = 0;
if (*p == '(') {
++p;
nr = eval();
++p;
} else {
while (*p >= '0' && *p <= '9') {
nr = nr * 10 + *p - '0';
p++;
}
}
return nr;
}
int main()
{
f >> s;
g << eval();
return 0;
}