Pagini recente » Cod sursa (job #2543960) | Cod sursa (job #2574055) | Cod sursa (job #1607202) | Cod sursa (job #122819) | Cod sursa (job #1822300)
#include <cstdio>
#include <cstring>
#include <cmath>
using namespace std;
int i;
char s[100100];
int numar()
{
int nr=0;
while(s[i]>='0' && s[i]<='9')
{
nr=nr*10+(s[i]-'0');
++i;
}
return nr;
}
int evaluare()
{
int suma=0,p=1;
while(s[i]!=')')
{
if(s[i]=='(')
{
++i;
p=p*evaluare();
}
else if(s[i]=='*') ++i;
else if(s[i]=='/')
{
++i;
if(s[i]=='(')
{
++i;
p=p/evaluare();
}
else p=p/numar();
}
else if(s[i]>='0' && s[i]<='9') p=p*numar();
else if(s[i]=='+')
{
suma+=p;
p=1;
++i;
}
else if(s[i]=='-')
{
suma-=p;
p=1;
++i;
}
}
suma+=p;
suma=abs(suma);
++i;
return suma;
}
int main()
{
FILE *f=fopen("evaluare.in","r");
fgets(s,100010,f);
int n=strlen(s);
if(s[n-1]=='\n')s[--n]=0;
s[n]=')';s[n+1]=0;
fclose(f);
f=fopen("evaluare.out","w");
fprintf(f,"%d",evaluare());
return 0;
}