在好例子网,分享、交流、成长!
您当前所在位置:首页C/C++ 开发实例C/C++语言基础 → 基于c++的大整数运算(支持二进制以及十进制的加、减、乘、除)

基于c++的大整数运算(支持二进制以及十进制的加、减、乘、除)

C/C++语言基础

下载此实例
  • 开发语言:C/C++
  • 实例大小:25.18M
  • 下载次数:17
  • 浏览次数:430
  • 发布时间:2019-12-15
  • 实例类别:C/C++语言基础
  • 发 布 人:duck weed
  • 文件格式:.zip
  • 所需积分:2
 相关标签: c++

实例介绍

【基本要求】

1.        要求采用链表来实现大整数的存储和运算,不允许使用标准模板类的链表类(list)和函数。同时要求可以从键盘输入大整数,也可以文件输入大整数,大整数可以输出至显示器,也可以输出至文件。大整数的存储、运算和显示,可以同时支持二进制和十进制,但至少要支持十进制。大整数输出显示时,必须能清楚地表达出整数的位数。测试时,各种情况都需要测试,并附上测试截图;要求测试例子要比较详尽,各种极限情况也要考虑到,测试的输出信息要详细易懂,表明各个功能的执行正确;

2.        要求大整数的长度可以不受限制,即大整数的十进制位数不受限制,可以为十几位的整数,也可以为500多位的整数,甚至更长;大整数的运算和显示时,只需要考虑正的大整数。如果可能的话,请以秒为单位显示每次大整数运算的时间;

3.        要求采用类的设计思路,不允许出现类以外的函数定义,但允许友元函数。主函数中只能出现类的成员函数的调用,不允许出现对其它函数的调用。

4.        要求采用多文件方式:.h文件存储类的声明,.cpp文件存储类的实现,主函数main存储在另外一个单独的cpp文件中。如果采用类模板,则类的声明和实现都放在.h文件中。

5.        不强制要求采用类模板,也不要求采用可视化窗口;要求源程序中有相应注释;

6.        要求采用Visual C 6.0及以上版本进行调试;


二、设计思路:

主要采用小学生竖式的思路。

加法:从最小的位开始逐位相加,十进制逢十进一(二进制,逢二进一)

减法:从最小位开始,逐位相减,位数不够则从高位退位,低位加十(二进制则加二)

乘法:和竖式乘法的原理相同,建立在加法的基础上,逐位相乘,再按位相加

除法:除法是建立在减法的基础上,但逐个相减的效率太低,先把除数乘以两数的位数之差的10的乘方倍。被除数能够减去除数的个数,即为商,剩下的即为余数,再把余数当做被除数,除数不变,如此循环,把每个循环的得到的商乘以除数扩大的倍数,相加。直到所得的余数小于除数结束运算。

乘方:建立在乘法的基础上,执行指数-1次底数的乘法,每次执行完都指数减一。最后累乘的结果即为最后的结果



三、设计结构:

主要包括两个类,一个list类,一个calculate类。

List类中包括所有的单独对一条链表的操作,如创立链表,输出,添加节点,删除节点,以及对链表数值的操作。

Calculate类中包括所有的涉及两条链表的操作,如两条链表大小的比较,大整数的加减乘除和乘方操作,以及运算结果的输出。

详细操作与分析见源代码的注释


【实例截图】

from clipboard

【核心代码】

标签: c++

实例下载地址

基于c++的大整数运算(支持二进制以及十进制的加、减、乘、除)

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警