Pagini recente » Cod sursa (job #3134038) | Cod sursa (job #2934226) | Cod sursa (job #2903767) | Cod sursa (job #237933) | Cod sursa (job #2870263)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
const int NMAX = 100003;
char s[NMAX], *p;
static inline int EVAL();
static inline int TERMEN();
static inline int FACTOR();
static inline int EVAL()
{
int rasp = TERMEN();
if(*p == '+' || *p == '-') {
if(*p == '+')
p++, rasp += TERMEN();
else p++, rasp -= TERMEN();
}
return rasp;
}
static inline int TERMEN()
{
int rasp = FACTOR();
if(*p == '*' || *p == '/') {
if(*p == '*')
p++, rasp *= FACTOR();
else p++, rasp /= FACTOR();
}
return rasp;
}
static inline int FACTOR()
{
if(*p == '(') {
p++;
int rasp = EVAL();
p++;
return rasp;
}
int nr = 0;
int sign = 1;
if(*p == '-')
sign = -1, p++;
while('0' <= *p && *p <= '9') {
nr = nr * 10 + *p - '0';
p++;
}
return nr * sign;
}
int main()
{
fin >> (s + 1);
p = (s + 1);
fout << EVAL() << '\n';
return 0;
}