Pagini recente » Cod sursa (job #789374) | Cod sursa (job #1530401) | Cod sursa (job #2862256) | Cod sursa (job #2937123) | Cod sursa (job #818893)
Cod sursa(job #818893)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in ("evaluare.in");
ofstream out ("evaluare.out");
char S[100010], *P = S;
int termen ();
int factor ();
int eval ()
{
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 = eval ();
++ P;
}
else{
while (*P >= '0' && *P <= '9'){
r = (r * 10) + (*P - '0');
++ P;
}
}
return r;
}
int main ()
{
in >> S;
out << eval ();
return 0;
}