Pagini recente » Cod sursa (job #1348835) | Cod sursa (job #2902653) | Cod sursa (job #1753399) | Cod sursa (job #2224657) | Cod sursa (job #1050941)
#include <stream>
#include<string.h>
using namespace std;
char s[100001],a[100001];
int b[100001],vf1,vf2,nr,ok,i,pr[256];
void calcul(){
char ch;
int rez;
ch=a[vf1];
switch(ch){
'+':rez=b[vf2-1]+b[vf2];break;
'-':rez=b[vf2-1]-b[vf2];break;
'*':rez=b[vf2-1]*b[vf2];break;
'/':rez=b[vf2-1]/b[vf2];break;
}
vf2--;
vf1--;
b[vf2]=rez;
}
int main()
{
s>>s;
pr['(']=1;
pr['+']=pr['-']=2;
pr['*']=pr['/']=3;
nr=0;
ok=0;
n=strlen[s];
for(i=0;i<=n;i++){
if(s[i]=='('){
vf1++;
a[vf1]=v[i];
}
else
if(s[i]=')'){
if(ok==1){
vf2++;
b[vf2]=nr;
nr=ok=0;
}
while(a[vf1]!='('){
calcul();
}
vf1--;
}
else{
if(s[i]>='0'&&s[i]<='9'){
ok=1;
nr=nr*10+s[i];
}
else{
if(ok==1){
vf2++;
b[vf2]=nr;
nr=ok=0;
}
while(vf1>0&&pr[a[i]]<pr[a[vf1]])
calcul();
vf1++;
a[vf1]=s[i];
}
}
}
while(vf1>0)
calcul();
g<<b[1];
return 0;
}