Pagini recente » Cod sursa (job #2863934) | Cod sursa (job #1871889) | Cod sursa (job #1660830) | Cod sursa (job #140513) | Cod sursa (job #2789549)
#include <fstream>
#include <cstring>
#define NMAX 100005
using namespace std;
ifstream in ("evaluare.in");
ofstream out ("evaluare.out");
char s[NMAX];
int i;
bool isdigit (char x)
{
return x >= '0' && x <= '9';
}
int adunare();
int factor ()
{
int nr;
if(s[i] == '(')
{
++i;
nr = adunare();
++i;
}
else
{
nr = 0;
while (isdigit(s[i]))
{
nr = nr * 10 + s[i] - '0';
++i;
}
}
return nr;
}
int inmultire ()
{
int rez = factor();
while (s[i] == '*' || s[i] == '/')
{
if (s[i] == '*')
{
++i;
rez = rez * factor();
}
else if (s[i] == '/')
{
++i;
rez = rez / factor();
}
}
return rez;
}
int adunare ()
{
int suma;
suma = inmultire();
while (s[i] == '+' || s[i] == '-')
{
if (s[i] == '+')
{
++i;
suma = suma + inmultire();
}
else if (s[i] == '-')
{
++i;
suma = suma - inmultire();
}
}
return suma;
}
int main()
{
in.getline(s, NMAX);
out << adunare();
return 0;
}