日暮下的约定 2014-03-10 14:19 采纳率: 0%
浏览 731

实现中序波兰数,为什么程序会总是崩掉啊?求大神指点啊。。。。已调式许久

#include
#include
#include
using namespace std;

void tran()/*中序转化成后续*/
{ stackoperation;
stackplus;
stackreplus;
char letter;

while(cin.get(letter)&&letter!='/n'){
if(isdigit(letter))
{ cout< plus.push(letter);
}
else if (letter=='(')
operation.push(letter);
else if(letter=='+'||letter=='-'||letter=='*'||letter=='/')
{
if(operation.empty())
operation.push(letter);
else
if((letter=='+'||letter=='-')&&(operation.top()=='*'||operation.top()=='/'))
{ cout plus.push(operation.top());
operation.pop();
operation.push(letter);
}
else
operation.push(letter);}
else
{
while(operation.top()!='('){
cout plus.push(operation.top());
operation.pop();}
operation.pop();}}
while(!operation.empty())
{
cout plus.push(operation.top());
operation.pop();}
while(!plus.empty()){
replus.push(plus.top());
plus.pop();
}}
/*运算后序波兰数*/
void result(stack&numbers,char letter){
int result1,result2;
result1=numbers.top();
numbers.pop();
result2=numbers.top();
numbers.pop();
switch(letter){
case'+':numbers.push(result1+result2);break;
case'-':numbers.push(result2-result1);break;
case'*':numbers.push(result2*result1);break;
case'/':numbers.push(result2/result1);break;}}
/*读取结果*/
void readit(stack&replus){
stacknumbers;
int number;
char letter;
letter=replus.top();
replus.pop();
while(letter!='\n'){
if(isdigit(letter)){
number=(int)letter-48;
numbers.push(number);}
else if(letter=='+'||letter=='-'||letter=='*'||letter=='/')
result(numbers,letter);
letter=replus.top();
replus.pop();}
cout<<numbers.top();}

int main(){
stackreplus;
cout<<"plaese write out your numbers and your operations"<<endl;
tran();
readit(replus);

return 0;}
  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 oracle集群安装出bug
    • ¥15 关于#python#的问题:自动化测试
    • ¥20 问题请教!vue项目关于Nginx配置nonce安全策略的问题
    • ¥15 教务系统账号被盗号如何追溯设备
    • ¥20 delta降尺度方法,未来数据怎么降尺度
    • ¥15 c# 使用NPOI快速将datatable数据导入excel中指定sheet,要求快速高效
    • ¥15 再不同版本的系统上,TCP传输速度不一致
    • ¥15 高德地图点聚合中Marker的位置无法实时更新
    • ¥15 DIFY API Endpoint 问题。
    • ¥20 sub地址DHCP问题