Pagini recente » Istoria paginii runda/qwerty-1 | Cod sursa (job #497780) | Cod sursa (job #1774484) | Istoria paginii runda/trainingflow/clasament | Cod sursa (job #1206937)
#include <fstream>
#define NMax 100010
using namespace std;
ifstream f("evaluare.in");
ofstream g("evaluare.out");
int ind;
char s[NMax];
long long term();
long long fact();
long long eval()
{
long long rez=term();
while (s[ind]=='+' || s[ind]=='-') {
if (s[ind]=='+') {
ind++;
rez+=term();
}
else if (s[ind]=='-') {
ind++;
rez-=term();
}
}
return rez;
}
long long term()
{
long long rez=fact();
while (s[ind]=='*' || s[ind]=='/') {
if (s[ind]=='*') {
ind++;
rez*=fact();
}
else if (s[ind]=='/') {
ind++;
rez/=fact();
}
}
return rez;
}
long long fact()
{
long long rez=0;
if (s[ind]=='(') {
ind++;
rez=eval();
ind++;
}
else {
while (s[ind] >= '0' && s[ind]<='9') {
rez = rez*10 + s[ind] - '0';
ind++;
}
}
return rez;
}
int main()
{
f.get(s, 100001);
g<<eval();
return 0;
}