Pagini recente » Cod sursa (job #2639152) | Cod sursa (job #148248) | Cod sursa (job #1956190) | Cod sursa (job #919526) | Cod sursa (job #1497034)
#include<fstream>
#include<iostream>
#include<string.h>
using namespace std;
ifstream in("evaluare.in");
ofstream out("evaluare.out");
char v[100000],i=0;
int adunare();
int exp()
{
if (v[i] != '(')
{
int nr = 0;
while (v[i] >= '0' && v[i] <= '9')
{
nr = nr * 10 + v[i] - '0';
++i;
}
return nr;
}
else if (v[i] == '(')
{
++i;
return adunare();
}
}
int inmultire()
{
int t1 = exp();
if (v[i] == '*')
{
++i;
int t2 = inmultire();
return t1 * t2;
}
else if (v[i] == '/')
{
++i;
int t2 = inmultire();;
return t1 / t2;
}
return t1;
}
int scadere()
{
int t1 = inmultire();
if (v[i] == '-')
{
++i;
int t2 = scadere();
return t1 - t2;
}
return t1;
}
int adunare()
{
if (v[i] != '\0')
{
int t1 = scadere();
if (v[i] == ')')
++i;
if (v[i] == '+')
{
++i;
int t2 = adunare();
return t1 + t2;
}
return t1;
}
}
int main()
{
in >> v;
out << adunare();
return 0;
}