长整数的加减运算系统说明文档11003601.
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
桂林电子科技大学综合设计说明书用纸
《数据结构与算法》
课程设计说明书
题目:长整数的加减运算
学院:计算机科学与工程学院
专业:信息安全
姓名:xxxxxxxx
学号:11003601xx
指导教师:张瑞霞老师
2013年9 月13 日
成绩评定标准及成绩
1、能按照格式进行写作,无抄袭现象(10分)
2、报告内容行文通畅,有条理性,无错别字,结构严谨。(10
分)
3、能够按照数据结构课设的格式要求、排版要求和字数要求
等,有需求分析,系统分析,详细设计,关键技术的介绍和参考文献。(10分)
4、在验收过程中,能合理的回答问题(20分)
5、软件能正常运行,实现所提出的功能(40分)
6、软件代码规范性较好(5分)
7、具有自己的创新或特色(5分)
总成绩:
目录
1、前言 (3)
2、需求分析 (4)
2.1.问题描述: (4)
2.2.基本要求: (4)
2.3.更高要求: (4)
2.4.测试数据: (4)
2.5.开发环境 Visual C++6.0(完整绿色版) (5)
3、系统概述 (5)
3.1.关键技术。 (5)
3.2.相关的函数接口 (6)
3.3.功能设计 (7)
4、系统分析 (7)
5、系统的调试与结果 (17)
5.1.调试过程出现的问题以及解决方法 (17)
5.2.成功的测试数据截图 (17)
6、课设小结 (20)
7、参考文献: (21)
1、前言
本系统主要内容是为数据结构长整数加法的实现,所以整个程序是为了实现长整数的加减法运算。设计一个实现任意长的整数间进行四则运算的程序,要求完成长整数的加运算和减运算。长整数的长度没有限制,可以是任意长,正确处理好运算之后的进位和借位。
每个结点中可以存放的最大整数为215-1=32767,才能保证两数相加不会溢出。但若这样存,即相当于按32768进制数存,在十进制数与32768进制数之间的转换十分不方便。故可以在每个结点中仅存十进制数4位,即不超过9999的非负整数,整个链表视为万进制数。
可以利用头结点数据域的符号代表长整数的符号。用其绝对值表示元素结点数目。相加过程中不要破坏两个操作数链表。两操作数的头指针存于指针数组中是简化程序结构的一种方法。不能给长整数位数规定上限。
由于在某些工程上进行加减运算时,有时候需要对很大的长整数进行计算,但是计算机本身提供的数据类型无法保证存在几百位甚至几千位的数字,所以需要设计专门的算法系统对数据进行相应的计算。因此本系统的设计主要任务是:设计一个程序能够实现任意长整数的加减运算的程序,而且能够对一些错误异常进行辨别调整,从而迅速计算出正确无误的结果。程序输入格式是字符串,包含元素的范围是数字,都好,负号以及分号,保存时需要用到双链表将字符串每四位保存在循环链表中的一个结点中,然后在计算出运行结果。
虽然程序有些复杂,但使用方法十分简单,只需按照相关提示进行操作即可,能够为用户的学习和工作带来快捷与方便。
2、需求分析
本系统主要内容是为数据结构长整数加法的实现,所以整个程序是为了实现长整数的加减法运算。设计一个实现任意长的整数间进行四则运算的程序,要求完成长整数的加运算和减运算。长整数的长度没有限制,可以是任意长,正确处理好运算之后的进位和借位。
2.1.问题描述:
首先最初的目的是设计一个实现任意长的整数进行加法运算的演示程序。
2.2.基本要求:
利用双向循环链表实现长整数的存储,每个结点含一个整型变量。任何整型变量的范围是-(215-1)~(215-1)。输入输出形式:按照中国对于长整数的表示习惯,每四位是一组,组间用逗号隔开。
2.3.更高要求:
(1)仅仅是能运行长整数的加法,还是不能达到我们运算的需求,因此,对于长整数的减法运算的设计将是对我们系统更高的一次挑战。
(2)多个长整数的连续加减法,并带括号等。具体方式可以参见表达式的求值部分,利用栈。
2.4.测试数据:
(1)0;0;应输出“0”。
(2)-2345,6789;-7654,3211;应输出“-1,0000,0000”。
(3)-9999,9999;1,0000,0000,0000;应输出“9999,0000,0001”。
(4)1,0001,0001;-1,0001,0001;应输出“0”。
(5)1,0001,0001;-1,0001,0000;应输出“1”。
(6)-9999,9999,9999;-9999,9999,9999;应输出“-1,9999,9999,9998”。
(7)1,0000,9999,9999;1;应输出“1,0001,0000,0000”。
注:实现提示:
(1)每个结点中可以存放的最大整数为215-1=32767,才能保证两数相加不会溢出。但若这样存,即相当于按32768进制数存,在十进制数与32768进制数之间的转换十分不方便。故可以在每个结点中仅存十进制数的4位,即不超过9999的非负整数。整个链表是为万进制数。
(2)可以利用头结点数据域的符号代表长整数的符号。用其绝对值表示元素结点数目。相加过程中不要破坏两个操作数链表。两操作数的头指针存于指针数组中是简化程序结构的一种方法。不
能给长整数位数规定上限。
2.5.开发环境 Visual C++6.0(完整绿色版)
Visual C++ 6.0 (完整绿色版)使用说明:
1、软件安装后,在桌面和开始菜单里分别建立快捷方式。
2、此版本适用于计算机等级考试上机环境及一般的C++应用。
3、此版本为默认安装后对安装文件夹完整打包,并安装windows\system32下的相应文件。
4、系统默认安装在:C:\Program Files\Microsoft Visual Studio 。
5、VC6.0通用补丁:特别适合于解决错误信息:“Compiling... , Error spawning cl.exe”
使用方法:退出VC,运行此文件,单击"是",再启动VC,可解决大部分问题。
6、系统安装后,如果考试系统提示没有安装VC,不影响使用,自行从桌面的快捷方式启动vc,
然后打开需要调试的程序,调试即可,不影响考试系统评分。
3、系统概述
3.1.关键技术。
3.1.1存储结构:循环双向链表。
循环链表是将单链表的形式稍作改变,不让最后一个结点的指针指为NULL,而让它指向头一个结点;双链表给运算带来的最大好处是可以很容易地找到结点的前驱和后继。将双链表的头一个结点和最后一个结点连接起来,这样不增加额外存储却给某些运算带来方便。
图3.1.1.加入头结点的循环双链表