Pagini recente » Cod sursa (job #1436579) | Cod sursa (job #1236805) | Cod sursa (job #1361945) | Cod sursa (job #2060681) | Cod sursa (job #2964922)
#include <fstream>
#include <cstring>1
using namespace std;
ifstream cin ("evaluare.in");
ofstream cout("evaluare.out");
#define isdigit(x) (x >='0' && x <= '9')
#define toint(x) (x - '0')
char E[100010];
int Ej = 0, szE;
int inm_inp();
int termen();
int get()
{
int n = 0;
while(isdigit(E[Ej]) && Ej < szE)
{
n = n * 10 + toint(E[Ej]);
Ej++;
}
return n;
}
int adun_scad()
{
int n = inm_inp();
while(E[Ej] == '+' || E[Ej] == '-')
{
if(E[Ej++] == '+') n += inm_inp();
else n -= inm_inp();
}
return n;
}
int inm_inp()
{
int n = termen();
while(E[Ej] == '*' || E[Ej] == '/')
{
if(E[Ej++] == '*') n *= termen();
else n /= termen();
}
return n;
}
int termen()
{
if(E[Ej] != '(')
return get();
int rem;
Ej++;
rem = adun_scad();
Ej++;
return rem;
}
int main()
{
cin.getline(E, 10010);
szE = strlen(E);
cout << adun_scad();
return 0;
}