Pagini recente » Cod sursa (job #2602630) | Cod sursa (job #1130047)
#include <cstring>
#include <iostream>
#include <fstream>
using namespace std;
#define MAXS 100005
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 ('0' <= *p && *p <= '9') {
nr = nr * 10 + *p - '0';
p++;
}
}
return nr;
}
int main()
{
f.getline(s, MAXS);
g << eval() << endl;;
f.close();
g.close();
return 0;
}