模拟计算器实验报告.doc

上传人:b****9 文档编号:94171 上传时间:2022-10-02 格式:DOC 页数:15 大小:185.50KB
下载 相关 举报
模拟计算器实验报告.doc_第1页
第1页 / 共15页
模拟计算器实验报告.doc_第2页
第2页 / 共15页
模拟计算器实验报告.doc_第3页
第3页 / 共15页
模拟计算器实验报告.doc_第4页
第4页 / 共15页
模拟计算器实验报告.doc_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

模拟计算器实验报告.doc

《模拟计算器实验报告.doc》由会员分享,可在线阅读,更多相关《模拟计算器实验报告.doc(15页珍藏版)》请在冰豆网上搜索。

模拟计算器实验报告.doc

-----------东华理工大学------------

课程设计报告

课程设计题目:

模拟机算器程序

学生姓名:

专业:

班级:

指导教师:

2011年11月27日

东华理工大学

课程设计评分表

学生姓名:

柯尊国班级:

10211303学号:

21

课程设计题目:

模拟机算器程序

项目内容

满分

实评

能结合所学课程知识、有一定的能力训练。

符合选题要求

(5人一题)

10

工作量适中,难易度合理

10

能熟练应用所学知识,有一定查阅文献及运用文献资料能力

10

理论依据充分,数据准确,公式推导正确

10

能应用计算机软件进行编程、资料搜集录入、加工、排版、制图等

10

能体现创造性思维,或有独特见解

10

总体设计正确、合理,各项技术指标符合要求。

10

说明书综述简练完整,概念清楚、立论正确、技术用语准确、结论严谨合理;分析处理科学、条理分明、语言流畅、结构严谨、版面清晰

10

设计说明书栏目齐全、合理,符号统一、编号齐全。

 格式、绘图、表格、插图等规范准确,符合国家标准

10

有一定篇幅,字符数不少于5000

10

总分

100

指导教师评语:

指导教师签名:

年月日

目录

一.课程设计题目

..................................................................................

二.问题分析

1.算法分析.....................................................................

2.流程图........................................................................

三.算法设计

1.算法描述.....................................................................

2.系统类图.....................................................................

3.属性和方法定义..............................................................

四.运行实例

................................................................................

五.经验与体会

................................................................................

六.参考文献

................................................................................

七.源代码

................................................................................

一:

课程设计题目

模拟计算器程序

问题描述

设计一个程序来模拟一个简单的手持计算器。

程序支持算术运算+、-、*、/、=、以及C(清除)、A(全清除)操作。

基本要求

程序运行时,显示一个窗口,等待用户输入,用户可以从键盘输入要计算的表达式,输入的表达式显示在窗口中,用户键入’=’符号后,窗口显示出结果。

测试数据

程序输入不少于5种不同的表达式进行测试。

实现提示

可定义一个计算器类,该类包括两个组件对象,一个计算引擎和一个用户接口,用户接口对象处理接受的键盘输入信息,并显示答案,计算引擎对象对给出的数据执行相应操作,并存储操作的结果。

选作内容

如果用户输入的表达式不合法,可以判别出来并给出相应的错误提示。

二.问题的分析

此程序设计主要运用了栈,利用栈后进先出的原理,建立两个栈,操作数栈和操作符栈,先将数据和运算符分别压入这两个栈,判断栈内和栈外运算符的优先级,依据运算符的优先级判断是应再次压入运算符,还是将数据和运算符弹出栈,在栈外进行运算,再将所得的结果压入栈,继续进行与计算,直至运算结束。

例如;计算5/2+1-2*3=

操作数2入操作数栈, 2

运算符”/”入运算符栈,

操作数5入操作数栈 5 /

数字栈运算符栈

运算符“+”入运算符栈顶

比较后,将2,5出栈运算,

并将结果入数字栈

2.5

数字栈字符栈

运算符“+”入字符栈,操作1

数1入数字栈

2.5 +

数字栈字符栈

运算符“—”入运算符栈顶比较后,将

1,2.5出栈运算,并将结果压入操作

数栈

3.5 —

运算符“—”入运算符栈

数字栈字符栈

操作数2入操作数栈,运算符“*”

入运算符栈顶比较后压入运算符栈 3

将操作数3压入操作数栈 2 *

3.5 —

数字栈字符栈

当扫描到=号时,操作数3和2出栈

运算符*出栈,进行运算,运算结果入

操作数栈

6

3.5 —

数字栈字符栈

操作数6和2出栈,运算符“—”

出栈,进行运算,运算结果入操作数

6

3.5 —

数字栈字符栈

运算符栈空,操作数栈中运算为运算

-2.5

数字栈字符栈

结果分析:

设置两个栈,运算数栈和运算符栈,然后,自左向右扫描表达式,遇操作数进操作数栈,遇

操作符栈则与操作符栈顶运算符比较:

若当前操作符大于操作符栈顶,则当前操作符进入操作符栈;若当前操作符小于等于运算符栈顶,次栈顶出栈,同时操作数栈顶也出栈,形成一个运算,并将运算的结果压入数字栈。

开始

流程图

初始化数字栈和字符栈

读入字符c

Y

是否为“=”号

N

N是否为运算符Y字符栈是否为空Y

C入数字栈Y是否比字符栈顶优先级高 NN

C入字符栈数字栈顶元素和次栈顶元素

出栈,运算符栈顶出栈,

运算结果入数字栈结束

三.算法的设计

1、创建一个calculator类,将计算器需要用到的函数都封装起来,形成一个整体。

2、设计成员函数及数据。

首先定义两个私有的结构体save1和save2分别用来存放数字和运算符,在结构体内定义整型的栈顶元素top,和存放数据及运算符的数组doublen[MAX]和charn[MAX]。

定义了一个空的构造函数calculator()。

函数boolstack1empty(save1s),boolstack2empty(save2s)分别判断数字栈和字符栈是否为空,若栈顶为-1则空则返回1表示真,否则返回0表示假。

函数voidpush1(save1&s,doublenum);,voidpush2(save2&s,charop);分别将数字和字符压入栈。

若所存储的内容已经数组的最大限度,则显示“栈已满”,否则将数字和字符压入栈顶。

函数voidpop1(save1&s,double&n

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1