Pagini recente » Cod sursa (job #1352782) | Cod sursa (job #2654442) | Cod sursa (job #973473) | Cod sursa (job #1151127) | Cod sursa (job #3210250)
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
char s[100000], * p;
int eval();
int termen();
int factor();
int eval()
{
int rez = termen();
while (*p == '+' || *p == '-')
{
p++;
if (*p == '+')
rez += termen();
else
rez -= termen();
}
return rez;
}
int termen()
{
int rez = factor();
while (*p == '*' || *p == '/')
{
p++;
if (*p == '*')
rez *= factor();
else
rez /= factor();
}
return rez;
}
int factor()
{
int rez = 0;
if (*p == '(')
{
p++;
rez = eval();
p++;
}
else
{
while ('0' <= *p && *p <= '9')
{
rez = rez * 10 + (*p - '0');
p++;
}
}
return rez;
}
int main()
{
fin >> s;
p = s;
fout << eval();
return 0;
}