Pagini recente » Cod sursa (job #283884) | Cod sursa (job #1234594) | Cod sursa (job #32924) | Cod sursa (job #2233752) | Cod sursa (job #1091484)
#include <fstream>
#include <cstring>
#define NMAX 100005
using namespace std;
//recursivitate indirecta
FILE* f=freopen("evaluare.in","r",stdin);
FILE* o=freopen("evaluare.out","w",stdout);
char exp[NMAX];
int ind,l;
char adsign[]="-+",prsign[]="/*";
int Expresie();
int Factor()
{
if(ind>=l) return 1;
int r=0;
if(exp[ind]=='(') {
ind+=1;
r=Expresie();
ind+=1;
}
else
{
while(exp[ind]>='0'&&exp[ind]<='9')
{
r=r*10+(exp[ind]-'0');
ind+=1;
}
}
return r;
}
int Termen()
{
if(ind>=l) return 0;
int r=Factor();
while(strchr(prsign,exp[ind]))
{
if(exp[ind]=='*'){
ind+=1;
r*=Factor();
}
else {
ind+=1;
r/=Factor();
}
}
return r;
}
int Expresie()
{
int r=Termen();
while(strchr(adsign,exp[ind]))
{
if(exp[ind]=='+') {
ind+=1;
r+=Termen();
}
else {
ind+=1;
r-=Termen();
}
}
return r;
}
int main()
{
scanf("%s",exp);
l=strlen(exp);
int r=Expresie();
printf("%d",r);
return 0;
}