Pagini recente » Cod sursa (job #2786354) | Cod sursa (job #2801377) | Cod sursa (job #1899314) | Cod sursa (job #1882139) | Cod sursa (job #2203250)
#include <fstream>
using namespace std;
ifstream in("evaluare.in");
ofstream out("evaluare.out");
char expr[100001];
int i;
int eval();
int factori();
int inmultire();
int eval(void)
{
int nr = inmultire();
while (expr[i] == '+' || expr[i] == '-')
{
if (expr[i++] == '+') nr += inmultire();
else nr -= inmultire();
}
return nr;
}
int inmultire(void)
{
int nr = factori();
while (expr[i] == '*' || expr[i] == '/')
{
if (expr[i++] == '*') nr *= factori();
else nr /= factori();
}
return nr;
}
int factori(void)
{
int nr = 0;
if (expr[i] == '(')
{
i++;
nr=eval();
i++;
}
else for (; expr[i]>='0'&&expr[i]<='9'; i++) nr = nr * 10 + (expr[i]-'0');
return nr;
}
int main()
{
in >> expr;
out<<eval();
return 0;
}