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

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

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构和算法课程设计--模拟简单计算器

通达学院算法与数据结构设计报告 ( 2014/2015学年 第 二 学期 ) 题 目: 模拟简单计算器 目录 一、课题内容和要求 1 二、需求分析 1 三、概要设计 1 1设计理念 1 2.子函数功能 2 3.函数的调用 4 四、详细设计 4 五、测试及结果分析 11 加法测试 11 减法测试 11 乘法测试 12 除法测试 12 混合运算 13 六、调试过程中的问题 13 七、课程设计总结 15 一、课题内容和要求 利用所学的数据结构的基本知识,设计一个计算器(90) 输入:带有括号、+,-,X,/ 的表达式; 输出:运算结果 实例:输入:(4*3-(2+1))*2 输出: 18 要求: 1)对不合法输入进行检测并提示; 2)对合法输入求出正确解; 二、需求分析 本程序主要是采用栈的理论知识,主要用到两个结构体栈,一个用来转化表达式,一个用来计算表达式。 三、概要设计 1设计理念 首先,用一个字符数组来存储用户输入的中缀表达式。然后用栈来把这个表达式转化为后缀表达式,转化时要进行符号优先级比较,这里将‘*’‘/’的优先级定为2,‘+’‘-’定为1,括号和‘=’定为0。具体思想如下:例如用户输入了1+2*3=,将其存放入一个字符数组中。先在栈的底部存放一个‘=’号符,用作符号优先级比较。首先将1存放到另外一个字符数组s1中,再将‘+’号入栈。入栈的同时与底部的‘=’比较优先级,‘+’的优先级高于‘=’,所以不出栈,之后将2存放入s2中,然后再将‘*’入栈,入栈的同时与‘+’比较符号优先级,‘*’比‘+’高,所以不出栈。再将3存入s2中。之后将栈中不是‘=’的运算符都弹出栈,并依次存入s2中。所以s2中的表达式为123*+。之后进行计算,计算时用到浮点栈。首先将s2中的字符依次入栈,遇到运算符时进行计算。所以将123入栈后,再将‘*’入栈的同时,将前面两个数字进行运算,算出结果为6并存入栈中,之后再将‘+’入栈,再与1进行运算,结果即为7,然后输出结果。 2.子函数功能 pseqstack1 init_seqstack1(void) { pseqstack1 S; S=(pseqstack1)malloc(sizeof(pseqstack1)); if(S) S-top1=-1; return S; }初始化栈 int empty_seqstack1(pseqstack1 S) { if(S-top1==-1) return 1; else return 0; } 判断栈是否为空 int push_seqstack1(pseqstack1 S,datatype1 X 进栈 int pop_seqstack1(pseqstack1 S,datatype1 *X) 出栈 int GetTop(seqstack *s) 取栈顶元素 int PP(char op,char c) 比较栈顶元素与当前读入的运算符的优先级 int Ope(int a,char m,int b) 从数字栈中取出的两个数的计算 int priority(char op) 优先级判断函数 int infix_exp_value(char *infixexp,char *postfixexp 将指针infixexp指向的中缀表达式转换为指针postfixexp指向的后缀表达式 double postfix_exp(char *A) 求后缀表达式的值 3.函数的调用 四、详细设计 # include stdio.h # include malloc.h # include conio.h # define maxsize 100 typedef double datatype1; typedef char datatype2; typedef struct stack1 { datatype1 data1[maxsize]; int top1; /*栈顶元素*/ }seqstack1,*pseqstack1; /*顺序栈*/ typedef struct stack2 { datatype2 data2[maxsize]; int top2; /*栈顶元素*/ }seqstack2,*pseqstack2; /*顺序栈*/ /*栈的初始化*/ pseqstack1 init_seqstack1(void) { pseqstack1 S; S=(pseqstack1

文档评论(0)

189****7685 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档