Pagini recente » Cod sursa (job #134373) | Cod sursa (job #2152363) | Cod sursa (job #3266197) | Cod sursa (job #2044594) | Cod sursa (job #1678807)
#include <fstream>
#include <cctype>
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
const int NMAX = 1e5 + 1;
char a[NMAX];
char *p;
int termen();
int factor();
int evalueaza();
int main()
{
fin >> a;
p = a;
fout << evalueaza();
return 0;
}
int evalueaza() {
int ans = termen();
while (*p == '+' || *p == '-') {
if (*p == '+') {
++p;
ans += termen();
}
else
++p, ans -= termen();
}
return ans;
}
int termen() {
int ans = factor();
while (*p == '*' || *p == '/') {
if (*p == '*')
++p, ans *= factor();
else
++p, ans /= factor();
}
return ans;
}
int factor() {
int ans = 0;
if (*p == '(') {
++p;
ans = evalueaza();
++p;
}
else {
while (*p >= '0' && *p <= '9')
ans = ans * 10 + *p - '0', ++p;
}
return ans;
}