2022年c++实现任意长整数的四则运算 .pdf
《2022年c++实现任意长整数的四则运算 .pdf》由会员分享,可在线阅读,更多相关《2022年c++实现任意长整数的四则运算 .pdf(13页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、实验题目:设计一数据结构可处理任意长度的整数概要设计1.数据结构的定义采用双向链表存储任意长整数。双向链表的定义如下:class DblList private: DblNode *head, *tail; DblNode *current; int sign; public: DblList(); /构造函数DblList(); /析构函数bool CreatList(string); /生成一个双向链表,存储整数int GetCount(); /获取整数的长度void Insert(DblNode *); /从表尾插入一个结点void InsertFront(DblNode *); /从表
2、头插入void Clear(); /清除该链表void operator+(DblList &); /实现两个任意整数的加法void operator*(DblList &); /实现两个任意整数的乘法DblList & operator=(DblList &); /重载赋值运算符int Compare(DblList &); /两个整数的绝对值比较void Display(); /任意长度整数的标准化输出;说明: 数据的存储,无外乎顺序或者链表。顺序存储时,定义数组无法实现任意长度,而且需要预设一个maxsize,不是特别的方便。所以采用链式存储方式。而且任意长数据通过字符串输入。在链表的每
3、一个结点中, 数据域是在该数位上的数字大小。2主要功能模块的功能任意长整数的输入任意长整数的标准化输出两个整数的加法两个整数的乘法三详细设计(主模块流程图)名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 13 页 - - - - - - - - - 五、 使用说明及测试结果1. 使用说明:点击打开应用程序pro1.exe 。依次输入任意两个整数 (例如 123456,+1234567) ,按回车,会出现菜单,如下图:名师资料总结 - - -精品资料欢迎下载 - - - -
4、 - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 13 页 - - - - - - - - - 按1则实现两整数的加法按2则实现两整数的乘法按#结束注:菜单可重复出现直至#退出。实现加法,乘法如下图:2.测试结果:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 13 页 - - - - - - - - - (1) 123456 (2) +1234567 (3) -987654321 (4) 12a3 (5)
5、 + 注:当输入错误时,允许重新输入。六、 源程序/* 主函数*/ /*/ #include cal.h void main() string s; string p; DblList list1; while(1) /输入错误时,允许重新输入coutInput num1s; bool ok1=list1.CreatList(s); if (!ok1) couterror!endl; else coutnum1:; list1.Display(); break; DblList list2; while(1) coutInput num2:p; bool ok2=list2.CreatList
6、(p); if (!ok2) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 13 页 - - - - - - - - - couterror!endl; else coutnum2:; list2.Display(); break; string choose; while (1) cout 请选择运算法:endl; cout-endl; /*菜单 */ cout|1.num1+num2 |endl; /*可以重复输入运算符,按#退出 */ cout|2.num1*nu
7、m2 |endl; cout|#.exit |endl; cout-choose; if (choose=1) list1+list2; break; else if (choose=2) list1*list2; break; else if (choose=#) return; else cout输入有误,请重新输入!endl; continue; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 13 页 - - - - - - - - - /*头文件,包括长整数数据
8、结构的定义,成员函数的定义*/ /*/ #include #include #include using namespace std; struct DblNode int data; DblNode * prior; DblNode * next; ; bool IsNum(char a) /判断字符a 是否是便是数字int s=a-0; if(s=0&s=1&snext=NULL; head-prior=NULL; tail=head; current=NULL; sign=0; DblList:DblList() /析构函数while (head-next!=NULL) current=
9、head-next; head-next=current-next; delete current; current=NULL; sign=0; delete head; head=NULL; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 13 页 - - - - - - - - - tail=NULL; int DblList:GetCount() /返回该数字的长度(不包括符号位)current=head-next; int count=0; while (curr
10、ent) count+; current=current-next; current=NULL; return count; void DblList:Insert(DblNode *p) /从链表尾部插入一个结点tail-next=p; p-prior=tail; tail=p; void DblList:InsertFront(DblNode *q) /从链表头部插入一个结点if (head-next=NULL) head-next=q; q-prior=head; tail=q; else q-next=head-next; head-next-prior=q; head-next=q;
11、 q-prior=head; bool DblList:CreatList(string s) /输入的任意长度的表示数字的字符串bool j=IsInt(s); /以此生成双向链表if (!j) return j; else int i=0; sign=JudSign(s); if (s0=+|s0=-) i+; while (si!=0) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 13 页 - - - - - - - - - int ia=CtoI(si); c
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年c+实现任意长整数的四则运算 2022 c+ 实现 任意 整数 四则运算
限制150内