2022年任意长整数加法运算-课程设计报告.docx
《2022年任意长整数加法运算-课程设计报告.docx》由会员分享,可在线阅读,更多相关《2022年任意长整数加法运算-课程设计报告.docx(14页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精品_精品资料_一、【试验内容】【问题描述】设计一个实现任意长的整数进行加法运算的演示程序【基本要求】:利用双向循环链表实现长整数的储备,每个结点含一个整形变量.任何整形变量的范畴是-215 - 1215 - 1.输入和输出形式:按中国对于长整数的表示习惯,每四位一组,组间用逗号隔开.【测试数据】:( 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
2、,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、本程序实现运算任意长的整数的加法运算 . 以用户和运算机对话的
3、方式,即在运算机终端上显示“提示信息”之后, 由用户在键盘上输入演示程序中规定的运算命令,然后程序就运算并显示出这两个数的运算.2、本演示程序中,集合的元素限定为数字字符 09 和字符,与 .,输入字符可以任意长,输入形式以“回车符”为终止标志,串中字符次序不限,且答应显现重复字符.3、利用双向循环链表现实长整数的储备,每个结点含一个整形变量.输入的形式以回车终止, 可以直接输入正数或负数. 按中国对于长整数的表示习惯, 每四位一组, 除数字和位于首位置的负号外, 其它一切字符都将作为分隔符, 连续多个分隔符当一个处理.但不使用分隔符也不影响结果.4、测试数据10; 0;输出“ 0”;2-23
4、45,6789; -7654,3211;输出 “ - 1,000,000 ”;3-9999,9999; 1,0000,0000,0000;输出 “9999,0000,0001 ”;41,0001,0001; -1,0001,0001;输 出 “0”;51,0001,0001; -1,0001,0000;输 出 ”1”;6-9999,9999,9999; -9999,9999,9999;输出“ - 1,9999,9999,9998 ”;71,0000,9999,9999; 1;输出 1,0001,0000,0000.可编辑资料 - - - 欢迎下载精品_精品资料_二、概要设计为实现上述程序功能,
5、应以双向循环链表表示长整数.为此,需要定义一个抽象数据类型.1. 抽象数据类型定义为:ADT OrderedList数据对象: D=ai|aiint,i=1,2,.n, n0 数据关系: R1=|ai-1,ai D|=2,n 基本操作:Creatstring a操作结果:通过字符串a 构造两个位数不限的长整数.addtwohead0,head1 ,result初始条件: head0,head1 都已存在 , 且 head0 的肯定值比 head1 大操作结果: result等于 head0 和 head1 的和. Addhead0,head1初始条件: head0,head1 都已存在.操作结
6、果:判定head0 与 head1 肯定值的大小,并 使 head0 的 绝 对 值 比 head1 大 Displayresult初始条件: result已存在.操作结果:按四位一组,分隔符为,的格式,在屏幕上输出result.ADT OrderedList2. 本程序包含三个模块:1) 主程序模块: void main可编辑资料 - - - 欢迎下载精品_精品资料_do初始化.接受命令.处理命令.可编辑资料 - - - 欢迎下载精品_精品资料_while“命令” =”退出”2) 、集合单元模块实现集合的抽象数据类型3) 、结点结构单元模块定义集合的结点结构各模块之间的调用关系如下:块主程序
7、模块集合单元模可编辑资料 - - - 欢迎下载精品_精品资料_结点模块二、具体设计可编辑资料 - - - 欢迎下载精品_精品资料_资料word 精心总结归纳 - - - - - - - - - - - -1、ZhengshuAdd.h 文件,链表的定义部分#include#include#include using namespace std; struct LinkNodeintdata;/记录每个节点的整数 (小于10000)LinkNode *next;/记录下一个节点的的址LinkNode *pre;/记录前一个节点的的址;class LinkListprivate:LinkNode
8、*head0,*head1;/head0, head1 分别记录两个整数链表的头指针LinkNode *currptr;LinkNode *result;/result记录结果链表的头指针public:LinkList;/构造函数,初始化链表LinkList;/析构函数,释放空间voidCreatstringa;/引入字符串,创立两个链表,分别表示两个整数void Add;/实现两个整数相加void Display;/显示结果void addtwo;/ 节点多的作为被加数,少的作为加数,实现整数肯定值大的加小的;2、ZhengshuAdd.cpp 文件,链表的实现部分#includeZheng
9、shuAdd.h int sumint n;LinkList:LinkList/构造函数,初始化链表head0=new LinkNode;/ 申请一个空间记录整数的符号和节点数head1=new LinkNode; head0-next=head0;head0-pre=head0;/初始化链表,建立双向循环链表head1-next=head1; head1-pre=head1;result=new LinkNode;可编辑资料 - - - 欢迎下载精品_精品资料_学习资料 名师精选 - - - - - - - - - -第 3 页,共 13 页 - - - - - - - - - -可编辑资料
10、 - - - 欢迎下载精品_精品资料_result-next=result; result-pre=result; currptr=NULL;LinkList:LinkList/ 析构函数,释放空间LinkNode *p1=head0,*p2=head1,*p3=result;/ 三个指针分别指向三条链表的头指针whilep1.=p1-prep1-pre-next=p1-next; p1-next-pre=p1-pre; currptr=p1;p1=p1-next; delete currptr;whilep2.=p2-pre/逐个删除节点,释放空间p2-pre-next=p2-next; p
11、2-next-pre=p2-pre; currptr=p2;p2=p2-next;delete currptr;whilep3.=p3-prep3-pre-next=p3-next; p3-next-pre=p3-pre; currptr=p3;p3=p3-next; delete currptr;/ delete p1;/ delete p2;/ delete p3;void LinkList:Creatstring a/引入字符串,创立两个链表,分别表示两个整数int i=0,j=0,m=0,n=0,k=0,l=0,s=0,w=0;可编辑资料 - - - 欢迎下载精品_精品资料_/i记录字
12、符串, j记录加数节点数. s 记录被加数节点数/w标记字符串中的 - 号/k记录字符串中的字符转化为整数的值,l使每个节点记录 4 位whileam.=;m+;/m记录字符串中被加数的字符数n=m;whilean.=0 n+;ifa0=-/n记录字符串的总字符数head0-data=-1;/记录整数符号w=1;else head0-data=1; fori=m-1;i=w;i-可编辑资料 - - - 欢迎下载精品_精品资料_为整数ifai.=,/把字符转化k+=ai-0*suml; l+;可编辑资料 - - - 欢迎下载精品_精品资料_ifai=,|i=wcurrptr=new LinkNo
13、de;/把整数存到双向循环链表中currptr-data=k; currptr-next=head0;currptr-pre=head0-pre; head0-pre-next=currptr; head0-pre=currptr; head0=currptr;s+;/节点数加 1 k=0;/重新初始化 k 和 ll=0;head0-pre-data*=s;/储备整数符号和节点数可编辑资料 - - - 欢迎下载精品_精品资料_/ 与建第一个整数链表一样,建立其次个整数链表head1 k=0;l=0;ifam+1=-可编辑资料 - - - 欢迎下载精品_精品资料_elsehead1-data=-
14、1; m+;head1-data=1;可编辑资料 - - - 欢迎下载精品_精品资料_fori=n-1;im;i-ifai.=,k+=ai-0*suml; l+;ifai=,|i=m+1currptr=new LinkNode; currptr-data=k; currptr-next=head1;currptr-pre=head1-pre; head1-pre-next=currptr; head1-pre=currptr; head1=currptr;j+; k=0; l=0;head1-pre-data*=j;void LinkList:Add/实现两个整数相加LinkNode *tem
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年任意长整数加法运算-课程设计报告 2022 任意 整数 加法 运算 课程设计 报告
限制150内