日暮下的约定 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条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥20 5037端口被adb自己占了
    • ¥15 python:excel数据写入多个对应word文档
    • ¥60 全一数分解素因子和素数循环节位数
    • ¥15 ffmpeg如何安装到虚拟环境
    • ¥188 寻找能做王者评分提取的
    • ¥15 matlab用simulink求解一个二阶微分方程,要求截图
    • ¥30 乘子法解约束最优化问题的matlab代码文件,最好有matlab代码文件
    • ¥15 写论文,需要数据支撑
    • ¥15 identifier of an instance of 类 was altered from xx to xx错误
    • ¥100 反编译微信小游戏求指导