Pagini recente » Cod sursa (job #2835245) | Cod sursa (job #1906997) | Cod sursa (job #3193986) | Cod sursa (job #1595759) | Cod sursa (job #1413798)
#include <fstream>
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
char sir[100005];
int i;
long long plusminus();
long long inmultireimpartire();
long long nrparanteze();
long long plusminus()
{
long long nr = inmultireimpartire();
while (sir[i] == '+' || sir[i] == '-')
{
if (sir[i] == '+')
{
++i;
nr += inmultireimpartire();
}
else if (sir[i] == '-')
{
++i;
nr -= inmultireimpartire();
}
}
return nr;
}
long long inmultireimpartire()
{
long long nr = nrparanteze();
while (sir[i] == '*' || sir[i] == '/')
{
if (sir[i] == '*')
{
++i;
nr *= nrparanteze();
}
else if (sir[i] == '/')
{
++i;
nr /= nrparanteze();
}
}
return nr;
}
long long nrparanteze()
{
long long nr = 0;
if (sir[i] == '(')
{
++i;
nr = plusminus();
++i;
}
while (sir[i] >= '0' && sir[i] <= '9')
{
nr = nr * 10 + int(sir[i] - '0');
++i;
}
return nr;
}
int main()
{
fin.getline(sir + 1, 100005);
i = 1;
fout << plusminus() << '\n';
fin.close();
fout.close();
return 0;
}