}
}
cout< double Add(word post[100],int l)//求和 { STACK S; MakeNull(S); for(int i=0;i if(post[i].type=='0')//为数字时 { Push(post[i],S); iDisplay(S); } else { double a,b; a=Pop(S).num; iDisplay(S); b=Pop(S).num; iDisplay(S); word c; c.type='0'; switch(post[i].type) { case '+': c.num=b+a;break; case '-': c.num=b-a;break; case '*': c.num=b*a;break; case '/': c.num=b/a;break; } default: break; Push(c,S); iDisplay(S); } } double result=Pop(S).num; iDisplay(S); } void analysis(char post[100],word m_word[100]) { //将中缀表达式转换为等价的中缀表达式 int i=0,j=0; double sum; while(post[i]!='#') { sum=0; if (post[i]>='0'&&post[i]<='9') { while(post[i]>='0'&&post[i]<='9') { } if (post[i]=='.') { sum*=10; sum+=(double)(post[i]-'0');//按多位数存储 i++; return result; } } } } i++; float k=10.0; while(post[i]>='0'&&post[i]<='9')//按小数存储 { } sum+=(double)(post[i]-'0')/k; i++; k*=10.0; m_word[j].type='0'; m_word[j].num=sum; j++; else { } m_word[j].type=post[i]; i++;j++; int main() { double r; char mid[100]; word m_word[100]; int i=0,m=0; cout<<\请输入中缀表达式\while(cin>>mid[i]) { } if(mid[i]=='#') break; i++; m++; } cout<<\输入的中缀表达式为\for(i=0;i cout< cout< analysis(mid,m_word); word post[100]; int l=0; cout<<\转换后的后缀表达式为\\n\Exchange(m_word,post,m,l); cout<<\运算结果为\\n\r=Add(post,l); cout<