Pagini recente » Cod sursa (job #2130983) | Cod sursa (job #2629752) | Cod sursa (job #1198460) | Cod sursa (job #1651575) | Cod sursa (job #2713761)
#include <bits/stdc++.h>
using namespace std;
ifstream f ("evaluare.in");
ofstream g ("evaluare.out");
constexpr int NMAX = 1e5 + 10;
char ch[NMAX+5];
char *p;
int Eval ();
int Factor ();
int Termen ();
int Eval () {
int r = Termen();
while (*p == '+' || *p == '-') {
if (*p == '+') {
p ++;
r = r + Termen();
}
else {
p ++;
r = r - Termen();
}
}
return r;
}
int Termen () {
int r = Factor();
while (*p == '*' || *p == '/') {
if (*p == '*') {
p ++;
r = r * Factor();
}
else {
p++;
r = r / Factor();
}
}
return r;
}
int Factor () {
int r = 0;
if (*p == '(') {
p ++;
r = Eval();
p ++;
}
else {
while (isdigit(*p)) {
r = r * 10 + (*p - '0');
++ p;
}
}
return r;
}
int main()
{
f.get(ch, NMAX);
p = ch;
g << Eval() << " ";
return 0;
}