Pagini recente » Conserve | Cod sursa (job #3164570) | Borderou de evaluare (job #772731) | Cod sursa (job #1632693) | Cod sursa (job #593067)
Cod sursa(job #593067)
# include <fstream>
# include <cstring>
using namespace std;
int poz;
char s[100010];
int grad1 (), grad2 (), paranteze ();
int grad1 ()
{
int val1 = grad2 ();
while (s[poz] == '+' || s[poz] == '-')
{
if (s[poz] == '+')
{
++poz;
val1 += grad2 ();
}
else
{
++poz;
val1 -= grad2 ();
}
}
return val1;
}
int grad2 ()
{
int val2 = paranteze ();
while (s[poz] == '*' || s[poz] == '/')
{
if (s[poz] == '*')
{
++poz;
val2 *= paranteze ();
}
else
{
++poz;
val2 /= paranteze ();
}
}
return val2;
}
int paranteze ()
{
int val3 = 0, semn = 1;
if (s[poz] == '-')
{
semn = -1;
++poz;
}
if (s[poz] == '(')
{
++poz;
val3 = grad1 ();
++poz;
return semn * val3;
}
while (s[poz] >= '0' && s[poz] <= '9')
{
val3 = val3 * 10 + s[poz] - '0';
++poz;
}
return val3 * semn;
}
ifstream f ("evaluare.in");
ofstream g ("evaluare.out");
int main ()
{
f.getline (s, 100005);
g << grad1 ();
g.close ();
return 0;
}