Pagini recente » Cod sursa (job #1353495) | Cod sursa (job #829161) | Cod sursa (job #2156706) | Cod sursa (job #518919) | Cod sursa (job #2369020)
#include <fstream>
using namespace std;
char s[100001], *p=s;
long long eval(); /// calculeaza +,-
long long termen(); /// calculeaza *,/
long long fact(); /// formeaza numarul (operandul), parcurge (,)
long long eval()
{
long long r = termen();
while(*p == '+' || *p =='-' )
if(*p == '+')
++p, r += termen();
else
++p, r -= termen();
return r;
}
long long termen()
{
long long r = fact();
while(*p == '*' || *p =='/')
if(*p == '*')
++p, r *= fact();
else
++p, r /= fact();
return r;
}
long long fact()
{
long long r = 0;
if(*p == '(')
++p, r = eval(),++p;
else
while(*p>='0' && *p<='9')
r = r*10 + *p - '0', ++p;
return r;
}
int main()
{
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
fin.get(s,100001);
fout << eval();
return 0;
}