Pagini recente » Cod sursa (job #2146920) | Cod sursa (job #2203625) | Cod sursa (job #1818272) | Cod sursa (job #1074515) | 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;
}