Pagini recente » Cod sursa (job #791416) | Cod sursa (job #2818382) | Cod sursa (job #530363) | Cod sursa (job #1392222) | Cod sursa (job #1193132)
#include <cstdio>
#include <cstring>
#include <cctype>
using namespace std;
#define NMAX 100010
int Evaluare();
int Factor();
int Termen();
char S[NMAX],*P;
int main()
{
freopen("evaluare.in","r",stdin);
freopen("evaluare.out","w",stdout);
gets(S);
P=S;
printf("%d\n",Evaluare());
return 0;
}
int Evaluare()
{
int Help,semn;
Help=Termen();
while (*P=='+' || *P=='-')
{
(*P=='+') ? semn=1 : semn=-1;
++P;
Help+=semn*(Termen());
}
return Help;
}
int Termen()
{
int Help=Factor(),type;
while (*P=='*' || *P=='/')
{
(*P=='*') ? type=1 : type=2;
++P;
(type==1) ? Help*=Factor() : Help/=Factor();
}
return Help;
}
int Factor()
{
if (*P=='(')
{
int Help;
++P;
Help=Evaluare();
++P;
return Help;
}
int Number=0;
while(isdigit(*P))
{
Number*=10;
Number+=(*P)-'0';
++P;
}
return Number;
}