c++实现任意长整数的四则运算.doc
《c++实现任意长整数的四则运算.doc》由会员分享,可在线阅读,更多相关《c++实现任意长整数的四则运算.doc(14页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
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 主要功能模块的功能u 任意长整数的输入u 任意长整数的标准化输出u 两个整数的加法u 两个整数的乘法三详细设计主模块流程图五、 使用说明与测试结果1.使用说明:点击打开应用程序pro1.exe。依次输入任意两个整数例如123456,+1234567,按回车,会出现菜单,如下列图:按1那么实现两整数的加法按2那么实现两整数的乘法按#完毕注:菜单可重复出现直至#退出。实现加法,乘法如下列图:2.测试结果:(1) 123456 (2) +1234567 (3) -987654321 (4) 12a3 (5) + 注:当输入错误时,允许重新输入。六、
4、源程序/* 主函数 */*/#include cal.hvoid main()string s; string p; DblList list1;while(1) /输入错误时,允许重新输入 coutInput num1s; bool ok1=list1.CreatList(s);if (!ok1) couterror!endl;elsecoutnum1:;list1.Display();break;DblList list2;while(1)coutInput num2:p; bool ok2=list2.CreatList(p);if (!ok2)couterror!endl;elseco
5、utnum2:;list2.Display();break;string choose;while (1) cout请选择运算法:endl;cout-endl; /*菜单*/cout|1.num1+num2 |endl; /*可以重复输入运算符,按#退出*/cout|2.num1*num2 |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输入有误,请重新输入
6、!endl;continue;/*头文件,包括长整数数据结构的定义,成员函数的定义*/*/#include #include #include using namespace std;struct DblNodeint 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!=
7、NULL) current=head-next;head-next=current-next;delete current;current=NULL;sign=0;delete head;head=NULL;tail=NULL;int DblList:GetCount() /返回该数字的长度不包括符号位 current=head-next;int count=0;while (current)count+;current=current-next;current=NULL;return count;void DblList:Insert(DblNode *p) /从链表尾部插入一个结点 tai
8、l-next=p; p-prior=tail;tail=p; void DblList:InsertFront(DblNode *q) /从链表头部插入一个结点if (head-next=NULL)head-next=q;q-prior=head;tail=q;elseq-next=head-next;head-next-prior=q;head-next=q;q-prior=head;bool DblList:CreatList(string s) /输入的任意长度的表示数字的字符串 bool j=IsInt(s); /以此生成双向链表if (!j) return j;elseint i=0
9、;sign=JudSign(s);if (s0=+|s0=-)i+;while (si!=0)int ia=CtoI(si);current=new DblNode();current-data=ia; current-next=NULL;current-prior=NULL;Insert(current);i+;current=NULL;return true;void DblList:Clear()while (head-next) current=head-next;head-next=current-next;delete current;tail=head;sign=0;curren
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c+ 实现 任意 整数 四则运算
限制150内