数据结构与算法课程设计--模拟简单计算器.pdf

数据结构与算法课程设计--模拟简单计算器.pdf

  1. 1、本文档共18页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

…………

…………………..…………..

通达学院算法与数据结构设计报告

(2014/2015学年第二学期)

………………..………

题目:模拟简单计算器

线

…………….

目录

一、课题内容和要求.

二、需求分析.

三、概要设计.

1设计理念

2.子函数功能

3.函数的调用

四、详细设计.

五、测试及结果分析.

加法测试

减法测试

乘法测试

除法测试

混合运算

六、调试过程中的问题.

七、课程设计总结.

一、课题内容和要求

利用所学的数据结构的基本知识,设计一个计算器(90)

输入:带有括号、+,-,X,/的表达式;

输出:运算结果

实例:输入:(4*3-(2+1))*2

输出:18

要求:

1)对不合法输入进行检测并提示;

2)对合法输入求出正确解;

二、需求分析

本程序主要是采用栈的理论知识,主要用到两个结构体栈,一个

用来转化表达式,一个用来计算表达式。

三、概要设计

1设计理念

首先,用一个字符数组来存储用户输入的中缀表达式。然后用栈

来把这个表达式转化为后缀表达式,转化时要进行符号优先级比较,

这里将‘*’‘/’的优先级定为2,‘+’‘-’定为1,括号和‘=’定

为0。具体思想如下:例如用户输入了1+2*3=,将其存放入一个字符

数组中。先在栈的底部存放一个‘=’号符,用作符号优先级比较。

首先将1存放到另外一个字符数组s1中,再将‘+’号入栈。入栈的

同时与底部的‘=’比较优先级,‘+’的优先级高于‘=’,所以不出

栈,之后将2存放入s2中,然后再将‘*’入栈,入栈的同时与‘+’

1

比较符号优先级,‘*’比‘+’高,所以不出栈。再将3存入s2中。

之后将栈中不是‘=’的运算符都弹出栈,并依次存入s2中。所以

s2中的表达式为123*+。之后进行计算,计算时用到浮点栈。首先将

s2中的字符依次入栈,遇到运算符时进行计算。所以将123入栈后,

再将‘*’入栈的同时,将前面两个数字进行运算,算出结果为6并

存入栈中,之后再将‘+’入栈,再与1进行运算,结果即为7,然

后输出结果。

2.子函数功能

pseqstack1init_seqstack1(void)

{

pseqstack1S;

S=(pseqstack1)malloc(sizeof(pseqstack1));

if(S)

S-top1=-1;

returnS;

}初始化栈

intempty_seqstack1(pseqstack1S)

{

if(S-top1==-1)

return1;

else

return0;

}

2

判断栈是否为空

intpush_seqstack1(pseqstack1S,datatype1X

进栈

intpop_seqstack1(pseqstack1S,datatype1*X)

出栈

intGetTop(seqstack*s)

文档评论(0)

***** + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档