大数运算器程序设计文档.docx

  1. 1、本文档共21页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
大数运算器程序设计文档

韶关学院计算机科学学院数据结构课程设计题 目:大数运算器学生姓名:学 号:专 业:班 级: 指导教师姓名及职称: 讲师 起止时间: 年 月—— 年 月1.需求分析1.1课题背景及意义大数运算,顾名思义,就是很大的数值的数进行一系列的运算。随着社会的发展,数据出现了指数般爆炸性增长,而在天文学,数学,遗传学等传统学科,所研究的数字往往几百位甚至上千位,要求的精度也很高。但是在计算机中,由于字长的限制,计算机所能表示的范围是有限的,当我们对比较小的数进行运算时,这样的数值并没有超出计算机的表示范围,所以可以运算。但是当我们在实际的应用中进行大量的数据处理时,会发现参与运算的数往往超过计算机的基本数据类型的表示范围,比如在天文学时常运用到的“光年”这一单位,如果求距地球几十光年的星球航天器所要到达的时间,计算机将无法对其进行运算。由于编程语言提供的基本数值数据类型表示的数值范围有限,不能满足较大规模的高精度数值计算,因此需要利用其他方法实现高精度数值的计算,于是产生了大数运算。大数运算主要有加、减、乘三种方法。既然在计算机中无法直接表示,那么大数到底如何进行运算呢,学习过数据结构的都知道线性表,将大数拆分然后存储在线性表中,不失为一个很好的办法。1.2课题要求基本要求: 实现一个大整数(要求允许绝对值2^32)的运算程序。要求程序读入操作数A和B,选择相应的加、减法或乘法运算符,然后计算结果并输出到屏幕上。选做内容:(1)实现整除运算; (2)求出运算时间; (3)实现乘方运算; (4)图形化操作界面。1.2.1程序规定格式(1)输入的形式:正数的不同输入符号位,输入数为整型数,数位理论上为无限位。(2)程序所能达到的功能:能进行理论上无限位的数值之间所有整型数的四则运算。(3)输出的形式:整型数据1.2.2测试的数据(1)正确的输入以下是对两个大数进行加减乘运算所得的正确结果:大数A:999888777666555444333222111000大数B:111222333444555666777888999000正确的运算结果:A+B:1111111111111111111111111110000A-B:888666444221999777555333112000A*B:111209963037098814851876554444456814851901296370456889000000以下是对两个大数进行除法运算所得的正确结果:大数A:999888777666555444333222111000大数B:1234567890正确的运算结果A/B:809909917280090157158(2)错误的输入数A:999999999999.9数B:3错误的结果:33333333333332概要设计2.1问题解决的思路概述 首先是确定结构化程序设计的流程图,利用字符串来进行比较数的大小,把程序主要分为五个部分:实现加法的模块,实现减法的模块,实现乘法的模块,实现除法的模块,实现求余的模块,通过函数的嵌套调用来实现其功能,并通过编写main主函数来实现大整数的正确输入与正确输出,最后通过调试程序来修改不足和优化程序界面。2.2相关函数的的介绍与说明int sign=1; //sign 为符号位inline int compare(string str1,string str2)//定义比较两个函数大小string ADD_INT(string str1,string str2) //加法string::size_type L1,L2;//定义L1,L2的类型int int1=0,int2=0; //int2 记录进位string::size_type tempint;//自定义tempintstring MUL_INT(string str1,string str2)//高精度乘法string DIVIDE_INT(string str1,string str2,int flag) //除法,flag==1时,返回商; flag==0时,返回余数string quotient,residue; //定义商和余数string tempstr//字符串变量string DIV_INT(string str1,string str2) { return DIVIDE_INT(str1,str2,1);}//除法,返回商string MOD_INT(string str1,string str2) { return DIVIDE_INT(str1,str2,0);}//除法,返回余数printf()//显示内容2.3主程序的流程图main()选择运算符号(+,-,*,/,%)从界面获取大数数据将字符型大数转换成所定义结

文档评论(0)

整理王 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档