[问题] 大数运算连续输入问题

楼主: laiDark (煎饺加赖)   2015-04-12 00:39:56
开发平台(Platform): (Ex: VC++, GCC, Linux, ...)
Code Block
写了一个可以简易运算 大数 的code
功能只有 + - * 且 还没有处理负数的功能
一开始写的版本 只能执行一次运算后 结束
功能都可以正常运行
加法:http://ppt.cc/993H
减法:http://ppt.cc/od1e
乘法:http://ppt.cc/mt~m
一旦我改成可以连续输入 乘法功能就怪怪的
http://ppt.cc/yY8Y
可以看到 除了第一次输入的乘法功能正常 其他乘出来结果都是错的
(+ - 两个正常)
还有的时候 第一次输入 就当掉.....
原始 code : http://codepad.org/v3HK3FCx
连续输入code : http://codepad.org/El9HSAtS
两者只差 184行的 while(1) 循环
简单说明一下 code :
4~23行 配合 190行输入 因为不知道会输入多大的资料 所以我就用malloc
24~63 加法的函式
64~100 减法的函式
102~160 乘法的函式
161~179 将结果印出来的函式
196~207 防呆
(or 194~205)
我处理乘法的办法: 假设要算的是
123456789 * 21 好了
我先将 123456789 从右到左开始算 所以我先分出9 8 7 6 5 4 3 2 1
转成数字存入 num0 一样也是右到左 所以num[0] = 1 num[1] = 2 这样
接下来再切21 分出 1 转成数字后 再去相乘 num0的每个数字
放入专存结果的阵列 再算2 与1乘出来的结果相加
最后在一次进位
主要概念是参考这个 http://ppt.cc/kxmB
我自己有尝试印出值 看过程
但我不懂为何印出很大的数字
(9*9最大也才81 怎么可能乘出84571 诸如此类的数字)
还麻烦各位大大 帮忙找出问题所在
是我逻辑错误 ?函式写错?想的不够周全?
作者: a90310609 (越来越~胖!)   2015-04-12 21:41:00
全部的memset的size不对,多乘sizeof(int)

Links booklink

Contact Us: admin [ a t ] ucptt.com