Pagini recente » Istoria paginii jc2018/runda-1 | Cod sursa (job #1054927) | Cod sursa (job #2291946) | Cod sursa (job #2293946) | Cod sursa (job #1292721)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in ("evaluare.in");
ofstream out ("evaluare.out");
const int MAXN = 100001;
char S[MAXN];
char *P;
inline int GetInt ()
{
int ret = 0;
while (*P >= '0' && *P <= '9'){
ret = (ret * 10) + (*P - '0');
P ++;
}
return ret;
}
int termen ();
int eval ()
{
int a = termen ();
while (*P == '+' || *P == '-'){
if (*P == '+'){
++ P;
a += termen ();
}
else{
++ P;
a -= termen ();
}
}
return a;
}
int factor ()
{
int a = 0;
if (*P == '('){
++ P;
a = eval ();
++ P;
}
else
a = GetInt ();
return a;
}
int termen ()
{
int a = factor ();
while (*P == '*' || *P == '/')
if (*P == '*'){
++ P;
a *= factor ();
}
else{
++ P;
a /= factor ();
}
return a;
}
int main()
{
in >> S;
P = S;
out << eval ();
return 0;
}