数据结构课程设计报告--简单计算器.doc

  1. 1、本文档共25页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
计算机科学与信息工程学院 数据结构课程设计 设计题目:简单计算器 专 业 计算机软件 班 级 计软2班 小组成员 蔡松佐 陈吉院 王希 刘军 符锦柏 曾祖滨 刘一霖 指导教师 张显全 2010 年 12 月 25 日 数据结构分工情况 组长:蔡松佐 组员:曾祖滨、陈吉院、符锦柏、刘军、刘一霖、王希 王希:负责设计程序的整体框架(定义数据结构,编写主函数) 评分:90分 符锦柏:负责编写栈的代码 评分:95分 蔡松佐:负责编写计算算术表达式的代码 评分:95分 陈吉院:负责编写比较符号优先级的代码 评分:90分 曾祖滨:负责将所有代码整合成一个完整的程序 评分:88分 刘军:负责写实验报告 评分:90分 刘一霖:负责测试程序,看其是否具有良好的健壮性 评分:88分 简单计算器 一 基本功能描述 简单的计算器的功能是对基本的加、减、乘、除、四则运算,可对输入的操作数,包括整数,小数等进行运算。 二 设计思路 本程序主要是采用栈的理论知识,主要用到两个结构体栈,一个用来转化表达式,一个用来计算表达式。区别就在于一个存储字符,一个存储浮点。首先,用一个字符数组来存储用户输入的中缀表达式。然后用栈来把这个表达式转化为后缀表达式,转化时要进行符号优先级比较,这里将‘*’‘/’的优先级定为2,‘+’‘-’定为1,括号和‘=’定为0。具体思想如下:例如用户输入了1+2*3=,将其存放入一个字符数组中。先在栈的底部存放一个‘=’号符,用作符号优先级比较。首先将1存放到另外一个字符数组s1中,再将‘+’号入栈。入栈的同时与底部的‘=’比较优先级,‘+’的优先级高于‘=’,所以不出栈,之后将2存放入s2中,然后再将‘*’入栈,入栈的同时与‘+’比较符号优先级,‘*’比‘+’高,所以不出栈。再将3存入s2中。之后将栈中不是‘=’的运算符都弹出栈,并依次存入s2中。所以s2中的表达式为123*+。之后进行计算,计算时用到浮点栈。首先将s2中的字符依次入栈,遇到运算符时进行计算。所以将123入栈后,再将‘*’入栈的同时,将前面两个数字进行运算,算出结果为6并存入栈中,之后再将‘+’入栈,再与1进行运算,结果即为7,然后输出结果。 三 概要设计 1,子函数功能 struct Stack{……} 用来转化表达式的机构体栈。 Struct FStack{……} 用来计算表达式的结构体栈 void InitStack(Stack s) 初始化结构体栈 void InitFStack(FStack s) 初始化结构体栈 char GetTop(Stack s) 获取栈顶数据 void IncrementStackSize(Stack s) 为栈扩充ncrementsize个存储空间 void IncrementFStackSize(FStack s) 为栈扩充ncrementsize个存储空间 void Push(Stack s,char e) 第一个栈入栈操作 void PushF(FStack s,float e) 第二个栈入栈操作 bool Empty(Stack s) 判断第一个栈是否为空。 bool EmptyF(FStack s) 判断第二个栈是否空 char Pop(Stack s) 表达式出栈 float PopF(FStack s) 计算的数据出栈 int Precede(char op) 确定优先级的函数 void Change(char *s1,char *s2) 改变两个字符串的储存位置 float Compute(char *s2) 实现数据的运算 2 函数的调用 主函数 主函数 栈的建立 Stack,FStack Change(str1,str2) 计算表达式 Compute(str2) InitFStack(S); PushF(S,x) PopF(S) 输出 cin.getline(str1,2); 3 测试数据及测试结果 (1)测试 1+2+3=6 (2) 测试2*4=8 (3)测试 3/2=1.5 (4)测试(1+2)*3=9 四 程序代码 #include iostream.h #include fstream.h #include string.h #include ctype.h #include stdlib.h #include strstrea.h struct Stack{ //转换表达式 char *elem; int top; int stacksize; in

文档评论(0)

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

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

1亿VIP精品文档

相关文档