• 大数加法问题
  • 用栈来模拟
    因为两个数串由高位到低位输入,由低位到高位计算,最后由高位到低位输出,故选择用栈模拟
#include <iostream>
#include <cstring>#define MAXSIZE 200using namespace std;   //使用名称空间stdtypedef struct
{int* top;int* base;int stacksize;
}Sqstack;int main()
{//大数加法(栈)int Initstack(Sqstack &OPND);int Push(Sqstack &OPND, int e);int Pop(Sqstack &OPND);Sqstack str1, str2, sum;char num1[200], num2[200];int T;int i;int flag=0;   //计数器char a;int b1, b2, c;int temp=0;   //进位标志cin >> T;while (flag < T){temp = 0;Initstack(str1);Initstack(str2);Initstack(sum);//栈初始化完成memset(num1, '\0', sizeof(num1));memset(num2, '\0', sizeof(num2));cin >> num1 >> num2;i = 0;a = num1[i++];while (a != '\0'){//入栈b1 = a - '0';Push(str1, b1);a = num1[i++];}i = 0;a = num2[i++];while (a != '\0'){//入栈b2 = a - '0';Push(str2, b2);a = num2[i++];}while (str1.base != str1.top&&str2.base != str2.top){//两栈均非空b1 = Pop(str1);b2 = Pop(str2);c = b1 + b2 + temp;if (c > 9){c = c - 10;Push(sum, c);temp = 1;}else{Push(sum, c);temp = 0;}}while (str1.base != str1.top){//栈str1非空b1 = Pop(str1) + temp;if (b1 > 9){b1 = b1 - 10;Push(sum, b1);temp = 1;}else{Push(sum, b1);temp = 0;}}while (str2.base != str2.top){//栈str2非空b2 = Pop(str2) + temp;if (b2 > 9){b2 = b2 - 10;Push(sum, b2);temp = 1;}else{Push(sum, b2);temp = 0;}}if (temp)        //最后进位Push(sum, temp);while (sum.base != sum.top){cout << Pop(sum);}cout << endl;delete[] str1.base;delete[] str2.base;delete[] sum.base;//栈销毁完成flag++;}return 0;
}//数栈Sqstack操作函数
int Initstack(Sqstack &OPND)
{//数栈初始化OPND.base = new int[MAXSIZE];if (!OPND.base)  return 0;OPND.top = OPND.base;OPND.stacksize = MAXSIZE;return 1;
}int Push(Sqstack &OPND, int e)
{//数栈入栈if (OPND.top - OPND.base == OPND.stacksize)  return 0;           //判断是否栈满*OPND.top++ = e;                                                //e入栈,栈顶指针+1return 1;
}int Pop(Sqstack &OPND)
{//数栈出栈int e;if (OPND.top == OPND.base)   return 0;                         //判断是否栈空e = *--OPND.top;                                               //栈顶指针-1,e存储栈顶元素return e;
}

利用栈来处理大数加法相关推荐

  1. 数据结构(十)栈的作用--大数的加法运算

    一.大数加法的定义 在Java中,整数类型有四种,byte(8位).short(16位).int(32位).long(64位). 其中,int类型为32为,也就是说最大的整数为2^31,如果超过了这个 ...

  2. 大数加法分析及C语言实现(加数可为负数)

    大数加法(加数可为负数) ·分析: 大数加法有如下几种情况: 1.两数同号 (1)同正:如,s1=11,s2=22:s1=0,s2=0 (2)同负:如,s1=-11,s2=-22 2.两数异号 (1) ...

  3. 大数加法【HDU 1002】

    大数加法模板 一般的加法只要int类型的两数直接相加即可,大一点的数可以设为long long类型,而超过长整型的数则属于大数问题了,大数加法其实也比较简单,利用数组实现就可以啦: 主要思想如下: ( ...

  4. 手把手带你利用栈来实现一个简易版本的计算器

    手把手带你利用栈来实现一个简易版本的计算器 什么是栈 栈的实现 通过数组实现 通过队列实现 实现思路 栈的经典应用场景 浏览器前进后退 括号配对 leetcode 20 题 表达式求值 leetcod ...

  5. 大数加法(ascll转换),利息计算(数组,sizeof与循环运用)

    一,大数加法 大数加法顾名思义,在超过long int 类型所承受的的较大数之间的加法运算,主流方法就是对数进行类型转换,如转换成字符串字符数组再对其依次相加,较为相识方式就是对10不断取余数,余数相 ...

  6. 有趣的数据结构算法10——后缀表达式(PRN)介绍及利用栈计算后缀表达式的结果

    有趣的数据结构算法10--后缀表达式(PRN)介绍及利用栈计算后缀表达式的结果 解题思路 实现代码 GITHUB下载连接 在前一天已经利用栈完成2进制到8进制的转换.但是栈的应用方面还有很多,本次我将 ...

  7. java 加法原理_js 大数加法

    /**大数加法 实现原理,利用竖式加法原理 */ function addStrings(num_str1, num_str2) { //字符串转字符数组 const num_arr1 = num_s ...

  8. 利用“栈”解决“出轨”问题

    本图文利用"栈"的知识解决了"出轨"问题!

  9. python【蓝桥杯vip练习题库】ADV-136大数加法(高精度加法)

    试题 算法提高 大数加法 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 输入两个正整数a,b,输出a+b的值. 输入格式 两行,第一行a,第二行b.a和b的长度均小于1000位. ...

最新文章

  1. Hikari连接池配多大合适
  2. 20非常有用的Java程序片段(3)
  3. 快速转 TypeScript 指南
  4. Tomcat提示“XDB 的服务器 localhost 要求用户名和密码”
  5. #ifndef、#def、#endif等宏是什么意思
  6. contiki makefile框架分析 contiki学习之一
  7. html 数组输入框,javascript输入数组
  8. 安装cm初始脚本配置数据库scm_prepare_database.sh(在主节点上)遇到的问题
  9. C语言嵌入式系统编程修炼之道
  10. 超级计算机在结构力学领域的应用,计算结构力学
  11. python 图像快速替换某种颜色
  12. 有效缓解失眠的好物,睡前尝试这些助眠好物改善失眠
  13. 计算机如何与机顶盒连接网络连接网络连接,如何将机顶盒连接到计算机
  14. 钢铁侠的原型,oracle的创始人,天才企业家—拉里·埃里森
  15. Linux服务器Redis 6.x安装、配置
  16. 华为OD机试题 - 数据分类(JavaScript)| 代码+思路+重要知识点
  17. xstart下远程报错已拒绝X11转移申请的解决方法
  18. 多电脑共享键鼠,传输数据,共享剪贴板
  19. ftp服务器必须运行ftp服务器软件对吗,ftp是什么?FTP服务器搭建及选择
  20. MTK平台驱动基本介绍-2

热门文章

  1. Java实现文件上传到服务器(FTP方式)
  2. c# abstract抽象类与继承类子类的构造函数_base
  3. iis7 64位 操作excel的一系列问题(未完待续)
  4. http://dev2dev.bea.com.cn/bbs/thread.jspa?forumID=122threadID=9172tstart=0
  5. 分布式消息中间件之kafka设计思想及基本介绍(一)
  6. 将CSV文件存为HTML文件形式
  7. OpenStack的组件
  8. 家中路由添加静态IP映射(一)
  9. Jquery各种前台效果JQ
  10. JavaScript把客户端时间转换为北京时间