c++ 计算器Word格式文档下载.docx

上传人:b****0 文档编号:13254046 上传时间:2022-10-08 格式:DOCX 页数:19 大小:142.29KB
下载 相关 举报
c++ 计算器Word格式文档下载.docx_第1页
第1页 / 共19页
c++ 计算器Word格式文档下载.docx_第2页
第2页 / 共19页
c++ 计算器Word格式文档下载.docx_第3页
第3页 / 共19页
c++ 计算器Word格式文档下载.docx_第4页
第4页 / 共19页
c++ 计算器Word格式文档下载.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

c++ 计算器Word格式文档下载.docx

《c++ 计算器Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《c++ 计算器Word格式文档下载.docx(19页珍藏版)》请在冰豆网上搜索。

c++ 计算器Word格式文档下载.docx

使用Word中自带的“公式编辑器”

5.装订

左侧装订

三、考核方式(供参考)

1.作业提交:

源文件(压缩文件命名:

学号_姓名_班级)、书面课程设计说明书(各占30%)

2.考勤:

10%

3.答辩:

30%

(1)随机抽取班级人数的30%进行公开答辩

(2)可自愿申请参加答辩。

(3)未参加答辩的同学成绩最高为中。

(4)答辩时长每人8-10分钟,介绍本人的作品或程序,并回答老师提出的问题。

 

课程设计说明书

题目:

用C++编程设计简易计算器

姓名:

学号:

___________________

班级:

_____

兰州交通大学

电信学院软件工程系

2016年7月7日

课程设计任务书

课程名称

程序设计课程设计(C++)

题目

用C++编程设计简易计算器

姓名

学号

班级

用windows系统下的visualC++6.0编程环境,编程设计简易计算器。

要求实现“+”、“-”、“*”、“/”、“(”、“)”五种运算符和数值各种结合下的计算。

此次编程,我们主要使用了“栈”、“string”存储变量表达式、“deque”作为存储容器,运用了栈“先入后出”的特点,队列“先入先出”的特点,以及缓冲空间,三者结合实现基础计算的目的。

程序质量:

1.符合课题要求,实现相应功能;

可以加以其他功能或修饰,使程序更加完善、合理。

2.要求界面友好美观(版权页、登录页…),功能明确,操作方便。

(登录页的用户名:

abcd,密码:

1234)

3.代码应适当缩进,并给出必要的注释,以增强程序的可读性。

4.程序调试完后需生成可执行文件。

课程设计说明书:

课程结束后,上交课程设计说明书和源程序。

课程设计说明书的内容及格式参见课程设计要求。

指导教师

签字

课程设计评分表

课程设计题目:

学院

专业

评价指标

指标内涵

分值

评分

选题与设计完成情况

选题难度

选题难度分为两个等级,A类选题为一级,B类选题为二级

30

工作量

工作量饱满,工作认真、严谨,遵守纪律,与同学团结协作、协调能力强,能按时完成设计任务。

综合运用

知识

综合运用知识能力强,能较系统地运用有关理论与知识解决实际问题。

能够独立查阅文献资料,从事调查研究;

具有收集、整理、加工各种信息及获取新知识的能力。

设计水平与实际能力

能独立开展设计工作,能熟练掌握和运用所学基本理论、基本知识和基本技能分析解决相关理论和实际问题,设计方案合理可行,界面友好,符合课题要求,实现相应功能;

可以加以其他功能或修饰,使程序更加完善、合理;

操作方便易行。

说明书撰写

写作水平

语言表达清晰,报告内容详实,能对本人所做工作进行详细论述。

文档质量

能够按照给定格式排版,页面美观。

答辩

思路清晰,语言流畅,回答问题准确。

(无此环节则删除此行)

考勤

按时出勤,不迟到早退,以每次点名为准

10

成绩

评阅时间:

2016年7月日

一.系统概述

首先从string读入一连串表达式,取出每一个字符后装入一个deque容器coll1中。

再从该容器取出每一个元素,利用栈将中缀表达式转换为后缀表达式,使用相对便于求值的后缀表达式来求值。

之后,我们将转换成的后缀表达式,装入容器coll3中。

最后,从coll3中取出元素,逐一处理,然后根据后缀表达式的计算公式(可根据相关资料查找),计算出相关表达式的值,实现简易计算器的功能。

二.系统分析

(一)功能分析

我们先定义输入流并建立栈A存放运算符,B存放结果,从输入流中读入一个操作数压进B,读入一个运算符压进A,如此反复。

则有:

读入一个元素i,如果i是操作数,压入B,跳转到1,如果i是运算符(不包含括号),跳转3.1,.如果i是,跳转4.1,如果i是EOF,即输入流结束,反复弹出A栈顶压入B,直到A为空,算法结束,B从栈底到栈顶的符号即为后缀表达式(需要把B翻个个儿)

(注:

3.1.判断A的栈定符号t,如果t不为(,且优先级大于等于i,则弹出t压入B,跳转,如果t为空,即栈中为空,或其他情况直接把i压入A,跳转到1,4.1.弹出A的栈顶压入到B,如此反复直到弹出的符号为(,(和)不要压入B,跳转到1)

1.从后缀表达式队列中依次取出元素 

2.如果是操作数,那么将其压入“结果栈”中;

3.如果是操作符,从“结果栈”中取出两个元素,进行计算。

(注意从栈中取元素的顺序和操作数的顺序是相反的) 

4. 

遍历后缀表达式结束后,“结果栈”中的元素就是最终的结果

(二)流程图

三.系统详细设计

(1)获得符号的优先级

switch(c)

{

case'

+'

:

-'

return0;

//如果是加减,返回0

break;

*'

/'

return1;

//如果是乘除,返回1

('

)'

return-1;

//如果是括号,返回-1

(2)判断符号的优先性

voidcheck(charc,stack<

char>

&

coll2,deque<

coll3)

{

if(coll2.empty())

coll2.push(c);

return;

}

if(isPra(c))

if(c=='

)coll2.push(c);

else

while(coll2.top()!

='

){//弹出所有元素直到遇到左括号

charch=coll2.top();

coll3.push_back(ch);

coll2.pop();

//当遇到左括号时,弹出但不加入coll3(后缀表达式中)

{//如果不是括号

charsym=coll2.top();

//取出栈顶元素,与当前符号进行优先性比较

if(getPri(c)<

=getPri(sym))

{//比较两符号的优先性

//如果c的优先性比栈顶符号小或等于,弹出栈顶元素

coll3.push_back(sym);

//并将其压入coll3(后缀表达式)中

check(c,coll2,coll3);

//递归调用check,比较当前符号c与下一个栈顶符号的优先性

else

//如果c比栈顶符号优先级大,那将c压入coll2(操作符栈)中

}

(3)前缀表达式转换为后缀表达式

{//判断符号的优先性

(4)前缀表达式转换为后缀表达式

voidallocate(deque<

coll1,stack<

{//从coll中取出元素,分配元素到coll2和coll3中

while(!

coll1.empty())

charc=coll1.front();

coll1.pop_front();

if(c>

0'

c<

9'

coll3.push_back(c);

elsecheck(c,coll2,coll3);

//调用check函数,针对不同情况作出不同操作

coll2.empty()){//如果输入结束,将coll2的元素全部弹出,加入后缀表达式中

charc=coll2.top();

不包含括号,运算符放在两个运算对象的后面,所有的计算按运算符出现的顺序,严格从左向右进行(不再考虑运算符的优先规则,如:

(2 

1) 

, 

即2 

四.程序测验:

(1)计算“7+2=”,计算结果是“9”。

(2)计算“7-2=”,计算结果是“5”。

(3)计算“9/3=”,计算结果是“3”。

(4)计算“4*5=”,计算结果是“20”。

(5)计算“(3+4)*2-5/3=”,计算结果是“13”。

(6)计算“((3-5)*3-5)/6=”,计算结果是“-1”。

五.程序代码

#include<

stack>

iostream>

deque>

string>

usingnamespacestd;

constintMAX=10000;

boolisPra(char

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

当前位置:首页 > 小学教育 > 其它课程

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

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