fishking00 2015-11-11 15:46 采纳率: 50%
浏览 695

求解,用以下代码编一个计算器为什么结果为nan?

#include
using namespace std;
#include"stack.h"
#include
//TLinkStack s0;
TLinkStack v0;
char *expr = new char[1000];
char *ex = new char[1000];

int isp(char ch)//in stack priority
{switch(ch)
{
case'#' :return 0;
case'(' :return 1;
case'*' :return 5;
case'/' :return 5;
case'%' :return 5;
case'+' :return 3;
case'-' :return 3;
case')' :return 6;
}
}
int icp(char ch)//in coming priority
{switch(ch)
{
case'#' :return 0;
case'(' :return 6;
case'*' :return 4;
case'/' :return 4;
case'%' :return 4;
case'+' :return 2;
case'-' :return 2;
case')' :return 1;
}}

void postfix(char *e)
{TLinkStack s;

char ch='#',ch1,op;
int i=0,a=0,b,t=0,k=0;
int j=1;
s.push(ch);
int length=strlen(e);
while((!s.Isempty())&&(i<length))
{ch=e[i];
if(isdigit(ch))
{
expr[k]=ch; k++;
ex[t]=ch; t++;
i++;}//take figures in the stack
else{if(isdigit(expr[k-1]))
{expr[k]=' ';k++;}
s.getTop(ch1);
if(isp(ch1)<icp(ch)){
s.push(ch);
i++;}//外部优先级高于内部优先级进栈

else if(isp(ch1)>icp(ch)) {
s.pop(op);
if(op!='#') {
expr[k]=op;k++;
ex[t]=op;t++;
}
}//外部优秀级低于内部优先级退栈

else {s.pop(op);
if(op=='(') { i++;
}

}
}
}
cout<<ex<<endl;
};

void pre(int i)
{int length=strlen(expr);
int a=0,b=0;
{if(isdigit(expr[i]))
{b=expr[i]-48;
a=a*10+b; }
else if(expr[i]=' ')
{v0.push(a);
a=0;
b=0;
}
}
}

bool getfigure(double &left,double &right)
{if(v0.Isempty()==true){return false;
}v0.pop(right);

if(v0.Isempty()==true){return false;
}v0.pop(left);
return true;
}

void calculator()
{
int result,length=strlen(expr);
double x,y,value;
for(int i=0;i<length;i++)
{pre(i);
if(expr[i]='+')
{if(getfigure(x,y))
{value=x+y;v0.push(value);}}

if(expr[i]='-')
{if(getfigure(x,y))
{value=x-y;v0.push(value);}}

 if(expr[i]='*')

{if(getfigure(x,y))
{value=x*y;v0.push(value);}}

 if(expr[i]='/')

{if(getfigure(x,y))
{value=x/y;v0.push(value);}}
}
v0.getTop(value);
cout<<"the result is"<<value;
}

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 C++使用Gunplot
    • ¥15 这个电路是如何实现路灯控制器的,原理是什么,怎么求解灯亮起后熄灭的时间如图?
    • ¥15 matlab数字图像处理频率域滤波
    • ¥15 在abaqus做了二维正交切削模型,给刀具添加了超声振动条件后输出切削力为什么比普通切削增大这么多
    • ¥15 ELGamal和paillier计算效率谁快?
    • ¥15 file converter 转换格式失败 报错 Error marking filters as finished,如何解决?
    • ¥15 Arcgis相交分析无法绘制一个或多个图形
    • ¥15 关于#r语言#的问题:差异分析前数据准备,报错Error in data[, sampleName1] : subscript out of bounds请问怎么解决呀以下是全部代码:
    • ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格
    • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)