Pagini recente » Cod sursa (job #597902) | Cod sursa (job #2678939) | Cod sursa (job #2493423) | Cod sursa (job #3188534) | Cod sursa (job #3278601)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
const int NMAX = 100000;
int n;
char s[NMAX+1], *p;
long long nr(); long long chunk(); long long eval();
long long nr()
{
int numar = 0;
if(*p == '(')
{
p++;
numar = eval();
p++;
}
else
{
while(isdigit(*p))
numar=numar*10 + (*p - '0'), p++;
}
return numar;
}
long long chunk()
{
int numar = nr();
while(*p == '*' || *p == '/')
{
if(*p == '*')
p++, numar*=nr();
else if(*p == '/')
p++, numar/=nr();
}
return numar;
}
long long eval()
{
int numar = chunk();
while(*p == '+' || *p == '-')
{
if(*p == '+')
p++, numar+=chunk();
else if(*p == '-')
p++, numar-=chunk();
}
return numar;
}
int main()
{
fin >> s;
p = s;
fout << eval();
return 0;
}