Pagini recente » Cod sursa (job #202978) | Cod sursa (job #793460) | Istoria paginii runda/boji_round2/clasament | Cod sursa (job #1851879) | Cod sursa (job #1698090)
#include<fstream>
#include<algorithm>
#include<vector>
#include<string.h>
using namespace std;
ifstream in("evaluare.in");
ofstream out("evaluare.out");
char s[100010];
int i = 0,l;
int sum();
int inter()
{
if (s[i] == '(')
{
++i;
return sum();
}
else
{
int nr=0;
while (i<l && s[i] >= '0' && s[i] <= '9')
nr = nr * 10 + (s[i] - '0'),++i;
return nr;
}
return 0;
}
int multiply()
{
int a = inter();
if(i < l)
{
while (s[i] == '*' || s[i] == '/')
{
if (s[i] == '*')
{
++i;
a *= inter();
}
if (s[i] == '/')
{
++i;
a /= inter();
}
if (s[i] == ')')
++i;
}
}
return a;
}
int sum()
{
int a = multiply();
if(i < l)
{
while (s[i] == '+' || s[i]=='-')
{
if (s[i] == '+')
{
++i;
a += multiply();
}
if (s[i] == '-')
{
++i;
a -= multiply();
}
}
if (s[i] == ')')
++i;
}
return a;
}
int main()
{
in >> s;
l = strlen(s);
out << sum();
return 0;
}