数据结构课程大型实验大整数参考模板.docx
- 文档编号:18142620
- 上传时间:2023-08-13
- 格式:DOCX
- 页数:15
- 大小:293.83KB
数据结构课程大型实验大整数参考模板.docx
《数据结构课程大型实验大整数参考模板.docx》由会员分享,可在线阅读,更多相关《数据结构课程大型实验大整数参考模板.docx(15页珍藏版)》请在冰点文库上搜索。
数据结构课程大型实验大整数参考模板
大类基础课程大型实验
2015/2016
(1)
实验题目大整数的运算
学生姓名____________***_
学生学号____________***********_
学生班级____
任课教师___________________
提交日期 _2015/5/19___
计算机科学与技术学院
大整数的运算实验报告
一、大型实验的容
大整数的运算(BIO:
BigInteger’sOperation)用于两个大整数的四则运算,要求完成的主要的功能包括能够进行两个大整数的加法、减法、乘法、除法、乘及取模运算,并有一个可以自行出入的运算上限。
要求使用学习过的数据结构的知识完成大整数运算的设计与实现。
二、运行环境
大整数的运算(BIO)在VisualStudio2013平台下开发,操作系统:
Windows7/Windows8。
硬件环境:
(备注:
可以查看“计算机”属性)
处理器:
Intel(R)Core(TM)i5-2557MCPU@1.70GHz1.70GHz
存:
4.00GB
系统类型:
32位操作系统
三、实验课题分析
3.1大整数的运算的主要功能
大整数的运算(BIO)主要功能为:
大整数的加法,大整数的减法,大整数的乘法,大整数的除法、大整数的乘、大整数的取模。
详细的系统功能结构为图1所示。
大整数的运算(BIO)
大整数的乘法模块
大整数的除法模块
大整数的乘方模块
大整数的加法模块
大整数的取模模块
大整数的减法模块
图1系统结构图
各模块的功能具体描述为:
1、大整数的加法模块
用户输入需要运算的大整数,实现加法,并及时输出结果。
若结果超过设置的最大上限,则取模最大上限后输出。
2、
3\
3.2分析及设计
涉及对象有3个基本类:
节点类、链表类和大整数类。
如下表所示:
表1涉及的操作
对象
涉及的对象操作
节点
运算过程中储存数字信息
链表
储存输入的大整数和运算过程中新生大整数的信息
大整数
实现大整数的运算,及相关的输入输出,错误的提示
可以采用面向对象的式实现大整数的运算。
主要的类结构如图2所示。
用户
大整数类
数据处理(节点类、链表类)
输入数据
输出数据
开始处理
处理完毕
图2主要类结构图
3.3运算的实现
(1)类的编写
运算工程名为:
BIO。
包含了Node类(数字节点类),List类(整数链表类)和Big类(大整数类)三个基本类。
其中Big类的函数实现中包含了List类,List类里也蕴含着Node类。
各自分工以完成需要的功能。
具体类结构声明如下:
●Node类:
classNode{//节点
public:
intnValue;//值
Node*Next;//下个节点
Node();
Node(int);//构造函数
};
●List类:
classList{
private:
Node*Head;//头指针
Node*Tail;//尾指针
public:
boolEmpty();//是否为空
List();//构造函数
~List();//析构函数
List(List&);//拷贝构造函数
intSize();//大小
Node*getHead();//返回头指针
Node*getTail();//返回尾指针
voidPush(int);//压入链表
voidDelete();//删除
voidInsert(List&);//插入
Listoperator=(List&);//赋值
voidPop();//弹出链表
intTop();//返回链表顶值
voidDisplay();//显示
};
(2)链表的使用
运算实现采用用户的输入输出对数字数据进行读取,但是由于大整数信息都是一个数字的集合,于是对数字的存储组织使用了单向链表。
在运用时,令当前数字的next节点指向新的数字节点,即节点的指针next保存新的数字结点的地址(如下图3所示),以此类推,所有数字信息就通过链表的形式串联起来了。
Figure1Figure2Figuren
data
*next
data
*next
data
......
*next
图3数字链表的建立
功能
●大整数的加法(每个算法都要按照这个流程写下来):
运算时,会读入用户输入的三个字符串。
如果第二个字符串是“+”,则进行加法运算。
运算过程中一旦发现数字有问题会立即报错,并抛出异常。
运算时从个位开始循环,依次读取两数相应位的值t1,t2,并新增一个进位数字kTemp。
每次相加时保存kTemp,以用于下一位的运算。
当其中一个数字到头时,t1或t2会被置为0让加法能继续下去。
结果取模最大上限。
大整数的加法的流程图如下:
开始
输入是否有问题
报错
将两数每一位依次相加,期间依靠进位数使加法完善。
取模最大上限
输出
结束
是
否
(3)交互界面的实现
系统运行开始的界面如图5所示:
图5开始界面
四、实验调试、测试、运行记录及分析
运算在调试测试过程中遇到若干问题,不过经过仔细反复的检查已经消除各种bug。
●加法:
●减法:
●乘法:
●除法:
●乘:
●取模:
●问题输入:
遇到的问题及解决法如下:
●问题1:
问题描述:
运算出来的结果并没有取模最大上限
解决法:
反复调试后发现是重载取模运算中一个判别语句的问题
本是
应为
●问题2:
问题描述:
解决法:
●问题3:
问题描述:
解决法:
五、实验总结
六、附录:
源代码
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课程 大型 实验 整数 参考 模板