Pagini recente » Cod sursa (job #2583203) | Cod sursa (job #2869965) | Cod sursa (job #818859) | Cod sursa (job #330202) | Cod sursa (job #2219111)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("evaluare.in");
ofstream fout ("evaluare.out");
int termen();
int factor();
char s[100005];
char *p = s;
int evaluare ()
{
int r = termen();
while (*p == '+' || *p == '-') {
switch (*p) {
case '+':
p ++;
r += termen();
break;
case '-':
p ++;
r -= termen();
break;
}
}
return r;
}
int termen ()
{
int r = factor();
while (*p == '*' || *p == '/') {
switch (*p) {
case '*':
p ++;
r *= factor();
break;
case '/':
p ++;
r /= factor();
break;
}
}
return r;
}
int factor ()
{
int r = 0;
if (*p == '(') {
++p;
r = evaluare();
p ++;
}
else {
while (*p <= '9' && *p >= '0') r = r * 10 + *p - '0', p ++;
}
return r;
}
int main ()
{
fin.get(s,100000);
fout << evaluare();
return 0;
}