Pagini recente » Cod sursa (job #1051) | Cod sursa (job #1449414) | Cod sursa (job #869980) | Cod sursa (job #269005) | Cod sursa (job #155073)
Cod sursa(job #155073)
#include <stdio.h>
#include <fstream.h>
#include <string.h>
#define NM 100001
long n,i;
char s[NM];
long suma(long&);
long produs(long&);
long termen(long&);
long suma(long &k)
{ long t=0;
t=produs(k);
while (s[k]=='+'||s[k]=='-')
{ if (s[k]=='+')
t+=produs(++k);
else t-=produs(++k);
}
return t;
}
long produs(long &k)
{ long t=0;
t=termen(k);
while (s[k]=='*'||s[k]=='/')
{ if (s[k]=='*')
t*=termen(++k);
else
t/=termen(++k);
}
return t;
}
long termen(long &k)
{ if (s[k]=='(') { long t=suma(++k);
k++;
return t;
}
else
{ long t=0;
while(s[k]>='0'&&s[k]<='9'&&k<n) t=t*10+s[k++]-'0';
return t;
}
}
int main()
{ freopen("evaluare.in","rt",stdin);
ofstream g("evaluare.out");
scanf("%s",s);
n=strlen(s);
long x=suma(i);
g<<x;
fclose(stdout);
fclose(stdin);
return 0;
}