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

问题描述

求解,用以下代码编一个计算器为什么结果为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;
}

时间: 2024-09-16 12:43:12

栈-求解,用以下代码编一个计算器为什么结果为nan?的相关文章

用vb编一个计算器,需要用到数组,看看下面的代码,欢迎来找碴!

数组 这是我的代码,请帮我看看哪有问题:(我是要用数组作个计算器) Option ExplicitDim shu1 As Double, shu2 As Double '先后输入的两个数Dim result As Double '做了运算的结果Dim process, process0, process1, process2, process3, process4 As Variant '保存数1与各个运算符的过程Dim judge As Variant '判断按了那个运算符 Private S

50行Python代码制作一个计算器

简介 在这篇文章中,我将向大家演示怎样向一个通用计算器一样解析并计算一个四则运算表达式.当我们结束的时候,我们将得到一个可以处理诸如 1+2*-(-3+2)/5.6+3样式的表达式的计算器了.当然,你也可以将它拓展的更为强大. 我本意是想提供一个简单有趣的课程来讲解 语法分析 和 正规语法(编译原理内容).同时,介绍一下 PlyPlus,这是一个我断断续续改进了好几年的语法解析 接口.作为这个课程的附加产物,我们最后会得到完全可替代eval()的一个安全的四则运算器. 如果你想在自家的电脑上试试

18 行 JS 代码编一个倒时器

有时候在生活中,你需要一个JavaScript倒计时时钟,而不是一个末日装置设备.不管你是否有一次约会,销售.促销.或者游戏,你可以受益于使用原生JavaScript构建一个时钟,而不是拿到一个现成的插件.虽然有许多很棒的时钟插件,但如果使用原生 JavaScript 实现,那你将得到以下好处: 代码将是轻量级的,因为它没有依赖关系. 你的网站会表现得更好,因为你不需要加载外部脚本和样式表. 你将会有更高的可控性,因为你将按照想要的时钟行为的方式来创建它(而不是找一个趋向你想法的插件). 所以事

html5- 求一个 计算器的 源代码求一个 计算器 的代码 谢谢各位大神

问题描述 求一个 计算器的 源代码求一个 计算器 的代码 谢谢各位大神 求一个 计算器 的代码 谢谢各位大神 求一个 计算器 的代码 谢谢各位大神 解决方案 html的 https://www.baidu.com/link?url=szrkXmxu37Ulv-6gand7apF8D2-v7y4-IHNQJ-lS8z-RpqIS7OGCiFJbUNEql_9MDGosqa5Yqw72QYx-X6Jv6K&wd=&eqid=a9ff47db000079ff0000000555b47cebhtt

wp-用WP做导航栏(调用/显示)一个菜单(要显示多个),求解!求代码!谢谢!

问题描述 用WP做导航栏(调用/显示)一个菜单(要显示多个),求解!求代码!谢谢! <div class="tel"></div> </div> <div class="nav"> <?php wp_nav_menu( array( 'theme_location' => 'header-menu' ) ); ?> </div>

C#简单的写一个计算器

问题描述 C#简单的写一个计算器 初学者,想编一个简单的计算器,基础不够扎实,不能灵活的运气变量,常量,还有我这里应该还需要转换数据类型,大侠们谁帮我 在我的基础上写完这个计算器 using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using Syste

vc-告急 用VC编一个课表编排系统

问题描述 告急 用VC编一个课表编排系统 位网路大哥,谁能用C++编学校课表管理系统? 小弟菜鸟一个,急需用它做课程设计,还有五天时间就得交了 请大侠们帮忙!!! 若编出来,麻烦您将其发到我的邮箱dorichul@163.com 如能获救,感激不禁!!!!! 解决方案 代码已发,解压密码请先采纳我的答案,然后我给你. 解决方案二: 参考:http://www.docin.com/p-699975728.htmlhttp://download.csdn.net/detail/weng21509/5

java-设计一个计算器用户界面

问题描述 设计一个计算器用户界面 设计一个计算器用户界面--不知道怎么布局,改了很多遍都不成功图一是标准的,图二是我的结果,下面是我打的代码: import java.awt.*; import javax.swing.*;public class Calculator extends JFrame{public Calculator() { JPanel p1 = new JPanel(); //frame.setLayout(new FlowLayout()); p1.setLayout(n

cjff-怎样在安卓系统上自己编一个APP应用

问题描述 怎样在安卓系统上自己编一个APP应用 求大神指教.!!,!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!需要哪些准备工作!???求解答 解决方案 有技术的自己去学Android,自己写代码,自己开发没技术的可以去网上,网上有些网站可以帮你做APP 解决方案二: 在pc上编译吧.用android studio这个软件. 解决方案三: 先配置好java环境,然后看你是选择用eclipse还是AS开发喽(建议使用AS,因为ec已经停止更新了)网站尽量去看国外的1.w