Pagini recente » Cod sursa (job #2569620) | Cod sursa (job #1495546) | Cod sursa (job #538262) | Cod sursa (job #2289053) | Cod sursa (job #1502670)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
#define MAX 100010
char c[MAX];
int ptr = 1;
int eval();
int inm();
int nr();
int eval()
{
int a;
a = inm();
while(c[ptr] == '+' || c[ptr] == '-')
{
ptr++;
if(c[ptr - 1] == '+')
a += inm();
else
a -= inm();
}
return a;
}
int inm()
{
int a;
a = nr();
while(c[ptr] == '*' || c[ptr] == '/')
{
ptr++;
if(c[ptr - 1] == '*')
a *= nr();
else
a /= nr();
}
return a;
}
int nr()
{
int a;
if(c[ptr] == '(')
{
ptr++;
a = eval();
ptr++;
}
else
{
a = 0;
while(c[ptr] >= '0' && c[ptr] <= '9')
{
a = a * 10 + c[ptr] - '0';
ptr++;
}
}
return a;
}
int main()
{
fin >> c + 1;
fout << eval();
}