Pagini recente » Cod sursa (job #1227412) | Cod sursa (job #869255) | Cod sursa (job #2110795) | Cod sursa (job #2055598) | Cod sursa (job #2257032)
#include <fstream>
using namespace std;
ifstream f("evaluare.in");
ofstream g("evaluare.out");
char s[1000010];
int n,i,nr;
unsigned long long eval();
unsigned long long factor();
unsigned long long termen();
unsigned long long eval()
{
unsigned long long r=termen();
while(s[nr]=='+' || s[nr]=='-')
{
if(s[nr]=='+')
{
nr++;
r+=termen();
}
else
{
nr++;
r-=termen();
}
}
return r;
}
unsigned long long termen()
{
unsigned long long r=factor();
while(s[nr]=='*' || s[nr]=='/')
{
if(s[nr]=='*')
{
nr++;
r*=factor();
}
else
{
nr++;
r/=factor();
}
}
return r;
}
unsigned long long factor()
{
unsigned long long r=0;
if(s[nr]=='(')
{
nr++;
r=eval();
nr++;
}
while(s[nr]>='0' && s[nr]<='9')
{
r=r*10+(s[nr]-'0');
nr++;
}
return r;
}
int main()
{
f.getline(s,1000010);
nr=0;
g<<eval()<<'\n';
return 0;
}