数据结构 计算器求大数..

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《C++程序设计》课程设计说明书

计算器求大数

院部:计算机与信息科学学院

学生姓名:

专业:软件工程

班级:1401

完成时间:2015年6月

目录

1. 设计概要........................................... 错误!未定义书签。

1.1 设计背景...................................... 错误!未定义书签。

1.2 数据结构设计.................................. 错误!未定义书签。

2. 需求分析........................................... 错误!未定义书签。

2.1 基本需求...................................... 错误!未定义书签。

2.2 实现功能...................................... 错误!未定义书签。

3. 算法设计........................................... 错误!未定义书签。

3.1 概要说明...................................... 错误!未定义书签。

3.2 模块间调用关系................................ 错误!未定义书签。

3.3 详细说明(Abstract Data Type描述)............ 错误!未定义书签。

3.4 流程图及主要函数模块说明...................... 错误!未定义书签。

3.4.1. 判断运算符优先权........................ 错误!未定义书签。

(1) 算符优先关系表......................... 错误!未定义书签。

(2) 算法代码............................... 错误!未定义书签。

3.4.2. 主操作函数.............................. 错误!未定义书签。

(1) 算法概要流程图......................... 错误!未定义书签。

(2) 操作过程............................... 错误!未定义书签。

(3) 算法代码............................... 错误!未定义书签。

3.4.3 二元运算函数............................. 错误!未定义书签。

(1) 算法代码............................... 错误!未定义书签。

4. 测试结果 (5)

4.1 简单表达式求值................................ 错误!未定义书签。

4.2 复杂表达式求值................................ 错误!未定义书签。

5. 总结............................................... 错误!未定义书签。

5.1 改进思想...................................... 错误!未定义书签。

5.2 经验和体会.................................... 错误!未定义书签。参考文献 (8)

附录 (11)

源程序 (11)

1. 设计概要

1.1设计背景

利用数组存储,根据需要改变大小。转化乘除法的思想,将乘法转化为加法,将除法转化为减法,减少程序计算的难度。

1.2数据结构设计

1.乘法用逐位相乘由各位到高位一次进行,然后初步确定计算结果的长度 s1[i] = c1[len1 - i -1] - '0' 将字符串转化为整型,并反着存放。

2.除法转化为减法的思想来计算,大大降低计算设计的难度,利用数来存储。并可以根据计算位数要求设计数组大小以满足需求。

3.通过主函数来实现函数的调用。

2.1 需求分析

在调查与科研实验中经常需要计算位数相对较大的加减乘除法,但是计算机本身提供的数据类型无法保存几百位甚至上千位的。所以针对超过手机与计算器计算位数的四则运算,设计出能实现长整数运算的程序。

2.1 实现功能

大数加法:输入两个位数较大的数,实现加法计算。

大数减法:输入两个位数较大的数,实现减法计算,但不能计算结果为负数的数。

大数乘法:输入两个位数较大的数,实现乘法计算。

大数除法:输入两个位数较大的数,实现除法计算,计算结果只保留整数。

进制转换:指定输入什么进制的数,可将其转变成任意进制数

4.测试结果

图4-1主菜单

图4-2 大数加法

图4-3 大数除法

图4-4 进制转换

5.实验总结

5.1改进思想

1.减法不能用小数减去大数,即不能有负数结果。

2.除法不能保留小数点后的数字,精确度还有待提高。

3.程序的界面也还有待改进,可以进一步将界面进行美化

5.2 经验和体会

大数的四则运算虽然不难,但是要打破常规,将乘法与除法换一种思想来计算,构思方面有很大的挑战。

在这次试验中我们认识到了对于特别长的数的计算,只能化整为零,先求局部的结果,然后将各部分的结果综合起来,得到最终的结果。比如加法就是从最低位开始计算,判断进位后再向高位计算。但是乘除法虽然进行了转换,但是数字如果太大的话,进行加减法的次数也是很庞大的。

本程序是分工完成的,所以我们也充分认识到了团队协作的重要性,通过一起的讨论与分工,我们能得出解决问题的最好办法,各抒己见,在争论中互相成长。

此外,这次的课程设计进一步加强了我们进行编程,调试,处理问题的能力,加深了我们对算法及数据结构的认识,对于程序的一些基本

相关文档
最新文档