大整数课程设计报告

大整数课程设计报告

ID:6356546

大小:116.25 KB

页数:30页

时间:2018-01-11

大整数课程设计报告_第1页
大整数课程设计报告_第2页
大整数课程设计报告_第3页
大整数课程设计报告_第4页
大整数课程设计报告_第5页
资源描述:

《大整数课程设计报告》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、中国矿业大学银川学院数据结构课程设计报告(2011/2012学年第二学期)题目名称《大整数代数运算》系部机电动力与信息工程系专业计算机科学与技术班级10级计算机(一)班学生牛建强102100510054学生王雪琴120100510004学生李自丹120100510005完成时间2011年6月指导老师王居平目录引言31.1问题描述41.2基本要求41.3输入输出41.4小组分工4概要设计42.1设计思路42.2数据结构设计52.3各模块之间的调用关系:5详细设计53.1数组初始化53.2算法63.3主

2、程序15调试与测试17总结心得17附录:源程序清单及运行结果19参考文献30引言大整数运算在科学计算中有着很重要的位置,所谓的大整数运算,是指参与运算的数(加数,减数,因子等)范围大大超出了标准数据类型(整型,实型)能表示的范围的运算。高精度运算主要解决以下三个问题:  一、加数、减数、运算结果的输入和存储运算因子超出了整型、实型能表示的范围,肯定不能直接用一个数的形式来表示。在Pascal中,能表示多个数的数据类型有两种:数组和字符串。二、运算过程(1)运算顺序:两个数靠右对齐;从低位向高位运算;

3、先计算低位再计算高位;  (2)运算规则:同一位的两个数相加再加上从低位来的进位,成为该位的和;这个和去掉向高位的进位就成为该位的值;如上例:3+8+1=12,向前一位进1,本位的值是2;可借助MOD、DIV运算完成这一步;  (3)最后一位的进位:如果完成两个数的相加后,进位位值不为0,则应添加一位;(4)如果两个加数位数不一样多,则按位数多的一个进行计算;三、结果的输出  按运算结果的实际位数输出四、优化:  以上的方法的有明显的缺点:  (1)浪费空间:一个整型变量(-32768~32767)

4、只存放一位(0~9);  (2)浪费时间:一次加减只处理一位;需求分析1.1问题描述C/C++语言中的int类型能表示的整数范围是-231~231-1,unsignedint类型能表示的整数范围是0~231-1,即0~4294967295,所以,int和unsignedint类型都不能存储超过10位的整数。有些问题需要处理的整数远远不止10位,这种大整数用C/C++语言的基本数据类型无法直接表示。请编写算法完成两个大整数的加、减、乘和除等基本的代数运算。1.2基本要求1.大整数的长度在100位以下;

5、2.设计存储结构表示大整数;3.设计算法实现两个大整数的加、减、乘、除等基本的代数运算;4.分析算法的时间复杂度和空间复杂度;1.3输入输出1、输入的形式和输入值的范围:因为使用的#DefineMN100声明语句定义的数组,所以程序中的数组均为100位的数组,所以输入输出的字符范围为100位;2、输出的形式:输入的形式为数字,但是中间存在字符转换,本程序输出的形式为字符型;3、程序所能达到的功能:本程序最终能达到:100位以内的两个大整数的加法、减法、乘法和除法等基本的代数运算,并能输出最终的结果;

6、1.4小组分工程序代码部分:由于能力与时间的限制,我小组代码由牛建强负责,程序的算法由王雪琴和李自丹负责,程序整体框架小组讨论得出。报告部分:王雪琴和李自丹负责需求分析、概要设计以及总结心得部分,牛建强负责详细设计以及调试与测试部分并负责整理和打印报告。概要设计2.1设计思路主要采取三大模块:储存、判断、算法、主程序数组:实现数据元素的存储、进位等;算法:实现对数据元素的对比、运算等;主程序:结合数组和算法,通过指针等实现对数组内数据的运算和调用;2.2数据结构设计1、大整数的代数运算模块:用数组存

7、储大整数,用字符串读入数据,即比较大的整型数组,数组元素代表大整数的一位。通过数组元素的运算模拟大整数的运算。根据计算的方便性,决定将大整数由低位到高位还是高位到低位存储到数组中,例如:乘法是由低位到高位进行运算并且可能要想高位产生进位,所以应该由低位到高位进行存储,如果从键盘输入大整数,一般用字符数组存储,这样无需对大整数进行分段输入,当然,输入到字符数组后,需要将字符转化成数字。2、主程序模块(1)声明数组变量(2)输出提示信息(3)输出提示信息(4)按要求输入数字(5)调用相应模块(6)输出结

8、果2.3各模块之间的调用关系:本程序主要包括以下模块:(1)主函数main() (2)加法运算(3)乘法运算(4)减法运算(5)除法运算(6)进位运算(7)借位运算(8)补零运算(9)去零运算(10)按位反向存储(11)复制字符串详细设计3.1数组初始化1、用宏模块的#DefineMN100声明所使用的MN字符串数组长度大小为100,这样的使用会在后来的程序编写中使程序的编译更加的简单,减少了工作量而且能提高程序的工作效率,在本程序数组中只需要使用例如:Chara[M

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。