Pagini recente » Cod sursa (job #370007) | Cod sursa (job #2035036) | Cod sursa (job #328354) | Cod sursa (job #63371) | Cod sursa (job #2956512)
#include <fstream>
#include <cstring>
using namespace std;
ifstream f("evaluare.in");
ofstream g("evaluare.out");
char x[100001];
int poz, lg;
int numar();
int produs();
int suma();
int numar()
{
int rez = 0;
if (x[poz] == '(')
{
poz++;
rez = suma();
poz++;
}
else
{
while (poz < lg && isdigit(x[poz]))
{
rez = rez * 10 + x[poz] - '0';
poz++;
}
}
return rez;
}
int produs()
{
int rez = numar();
while (poz < lg && (x[poz] == '*' || x[poz] == '/'))
{
if (x[poz] == '*')
{
poz++;
rez = rez * numar();
}
else
{
poz++;
rez = rez / numar();
}
}
return rez;
}
int suma()
{
int rez = produs();
while (poz < lg && (x[poz] == '+' || x[poz] == '-'))
{
if (x[poz] == '+')
{
poz++;
rez = rez + produs();
}
else
{
poz++;
rez = rez - produs();
}
}
return rez;
}
int main()
{
f >> x;
lg = strlen(x);
g << suma();
return 0;
}