Pagini recente » Cod sursa (job #574854) | Cod sursa (job #1955834) | Cod sursa (job #536816) | Cod sursa (job #1526928) | Cod sursa (job #2840383)
#include <fstream>
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
int stiva_op[100005],stiva_rez[100005],nr;string s;int poz1=0,poz2=0,poz=0;
int rez,rez1;int semn;
void F(int start){
while(1){
if(s[poz]=='+'){
poz1++;stiva_op[poz1]=1;poz++;
}
else if(s[poz]=='-'){
poz1++;stiva_op[poz1]=2;poz++;
}
else if(s[poz]=='*'){
poz1++;stiva_op[poz1]=3;poz++;
}
else if(s[poz]=='/'){
poz1++;stiva_op[poz1]=4;poz++;
}
else if(s[poz]>='0'&&s[poz]<='9'){nr=0;
while(s[poz]>='0'&&s[poz]<='9'){
nr=nr*10+(s[poz]-'0');poz++;
}
poz2++;stiva_rez[poz2]=nr;
}
else if(s[poz]=='('){
poz++;F(poz2+1);
}
else if(s[poz]==')'||poz>=s.size()){
rez1=stiva_rez[start];rez=0;semn=1;
for(int i=start+1;i<=poz2;i++){
if(stiva_op[i-1]==1||stiva_op[i-1]==2){
rez+=semn*rez1;rez1=stiva_rez[i];if(stiva_op[i-1]==1){semn=1;}else{semn=-1;}
}
else if(stiva_op[i-1]==3){
rez1*=stiva_rez[i];
}
else if(stiva_op[i-1]==4){
rez1/=stiva_rez[i];
}
}
if(rez1!=0){
rez+=semn*rez1;
}
stiva_rez[start]=rez;poz2=start;poz1=start-1;poz++;return;
}
}
}
int main()
{
fin>>s;s="0+("+s;s=s+")";F(0);
fout<<stiva_rez[0]<<'\n';
return 0;
}