复习高精度玩,写了个非常直观的加减乘程序.

  1 Uses Math;
  2 Var
  3   a,b:AnsiSTring;
  4   DC,la,lb:longint;
  5   c:Array[-2555555..2555555] of longint;
  6 Procedure Plus(a,b:AnsiSTring);
  7   Var
  8     Tt,i:longint;
  9   Begin
 10     if la>lb Then
 11       Begin
 12         For i:=1 to la-lb do
 13           b:='0'+b;
 14         lb:=la;
 15       End
 16     Else
 17       Begin
 18         For i:=1 to lb-la do
 19           a:='0'+a;
 20         la:=lb;
 21       End;
 22     For i:=1 to la do
 23       c[i]:=Ord(a[i])+Ord(b[i])-96;
 24     For i:=la Downto 1 do
 25       if (c[i]+DC)>=10 Then
 26         Begin
 27           Tt:=(c[i]+DC) Mod 10;
 28           DC:=(c[i]+DC) Div 10;
 29           c[i]:=Tt;
 30         End
 31       Else
 32         Begin
 33           c[i]:=c[i]+DC;
 34           DC:=0;
 35         End;
 36     c[0]:=-1;
 37     if DC>0 Then c[0]:=DC;
 38     For i:=0 to la do
 39       if c[i]<>-1 Then  Write(c[i]);
 40     Writeln;
 41   End;
 42 Procedure Minus(A,b:AnsiSTring);
 43   Var
 44     t:AnsiSTring;
 45     Tt,i:longint;
 46   Begin
 47     if la>=lb Then
 48       Begin
 49         For i:=1 to la-lb do
 50           b:='0'+b;
 51         lb:=la;
 52       End
 53     Else
 54       Begin
 55         For i:=1 to lb-la do
 56           a:='0'+a;
 57         la:=lb;
 58         Write('-');
 59         t:=a;
 60         a:=b;
 61         b:=t;
 62       End;
 63     For i:=1 to la do
 64       c[i]:=Ord(a[i])-Ord(b[i]);
 65     For i:=la Downto 1 do
 66       if (c[i])<0 Then
 67         Begin
 68           c[i]:=c[i]+10;
 69           c[i-1]:=c[i-1]-1;
 70         End;
 71     lb:=1;
 72     While (c[lb]=0) And (lb<la) do Inc(lb);
 73     For i:=lb to la do
 74       if c[i]<>-1 Then  Write(c[i]);
 75     Writeln;
 76   End;
 77 Procedure Multiply(a,b:AnsiString);
 78   Var
 79     Tt,xx,i,j:longint;
 80   Begin
 81     xx:=0; Tt:=Maxlongint;
 82     For i:=La Downto 1 do
 83       For j:=lb Downto 1 do
 84         Begin
 85           c[i+j-1]:=((Ord(a[i])-48)*(Ord(b[j])-48)+c[i+j-1]);
 86           Tt:=Min(Tt,i+j-1);
 87           xx:=Max(xx,i+j-1);
 88         End;
 89     While c[tt]=0 Do Inc(tt);
 90     DC:=0;
 91     For i:=xx Downto Tt Do
 92       Begin
 93         if c[i]+DC>=10 Then
 94           Begin
 95             lb:=c[i];
 96             c[i]:=(c[i]+DC) Mod 10;
 97             DC:=(lb+DC) Div 10;
 98           End
 99         Else                           //17956
100           Begin
101             c[i]:=c[i]+Dc;
102             DC:=0;
103           End;
104       End;
105     if DC>0 Then Write(DC);
106     For i:=Tt To xx do Write(c[i]); Writeln;
107   End;
108 Begin
109   While True Do
110     Begin
111       Writeln('高精度数字计算器 Ver 0.9 Done By Catch-22.S.In');
112       Writeln('本计算器暂时只支持加减乘三则运算,其他运算更新中...');
113       Writeln('请不要拿无聊的超多位数来BS本程序,谢谢合作.');
114       Writeln('请输入要计算的两个高精度数字:');
115       Write('请输入第一个数字,并换行:');
116       Readln(a);
117       Write('请输入第二个数字,并换行:');
118       Readln(b);
119       la:=length(a);
120       lb:=Length(b);
121       Writeln('计算中..');
122       FillChar(c,Sizeof(c),0); DC:=0;
123       Write(a,'+',b,'=');
124       Plus(a,b);
125       FillChar(c,Sizeof(c),0); DC:=0;
126       Write(a,'-',b,'=');
127       Minus(a,b);
128       FillChar(c,Sizeof(c),0); DC:=0;
129       Write(a,'*',b,'=');
130       Multiply(a,b);
131       Writeln('谢谢使用,如需继续计算请输入11,如不需要请输入任意字符');
132       Readln(a);
133       if a<>'11' Then
134          Begin
135            Writeln('Thank You.');
136            For la:=1 to Maxlongint Shr 4 do lb:=1;
137            Exit;
138          End;
139     End;
140 End.

EXE:http://yunpan.cn/lk/sVMDU5H9aYjgJ ,欢迎使用.

转载于:https://www.cnblogs.com/Catch-22/archive/2012/11/05/2756004.html

高精度加减乘法小程序相关推荐

  1. android商品数量加减,微信小程序实现一个简单的商品数量加减案例

    简介 这是一个用微信小程序原生代码实现的数量加减demo,主要是用于商品购物车或者商品详情修改数量使用,很简单哦~~~. 核心js方法说明addCount(增加数量) delCount (减少数量) ...

  2. 矩阵的加减乘c语言程序,C语言实现的矩阵加减乘法运算系统

    C语言实现的矩阵加减乘法运算系统 /*本矩阵运算系统可以完成矩阵的加.减.乘法,但是只限于方阵*/ #include<stdio.h> #include<math.h> /*- ...

  3. 大数高精度加减、乘除、开根(C++版全套最详细、最易懂)

    大数高精度加减.乘除.开根 一.前面铺垫 二.加法 三.减法 四.乘法 五.除法 六.开根(待完善)   大数高精度加减乘除主要用在超过long型的数字计算(比如1000位数), 最基本的思路就是换成 ...

  4. poj2756(高精度加减)

    是不是我没有理解这个题目,就是A+B高精度加减,为什么我的代码有问题呢?下面是自己写的代码,还是存在问题! #include<iostream> #include<algorithm ...

  5. bigdecimal保留4位小数_四年级数学小数的加减乘法知识点汇总,带练习!

    张老师 - 4年级(多品小学教育) 顺城中心小学郭老师和环县虎洞中心小学谭老师需要的这份学习资料现在分享. 本资料已制作电子版 下载码是:76qa32vd <小数的加减乘法>知识点 一.小 ...

  6. Python 打造微信小程序-加减大师辅助程序

    写在前面: 主要运用python进行简单的图像处理,不得不说python用起来是真的爽,各种库的学习使得开发变得越来越简单... 其实玩过这个小程序的应该知道实现起来也不是很难,很适合新手练手.第一次 ...

  7. 学法减分小程序可用可运营源码附带安装教程

    介绍: 淘宝1000买的学法可用可搭建 学法减分助手小程序前端源码+后端教程 网盘下载地址: http://kekewl.org/gOnDqsdx9iy0 图片:

  8. 亲测-独立后台版本+学法减分小程序2022最新可用可运营源码+附带详细安装教程

    简介:朋友淘宝1000买的,有需要的自行下载 含义:""学法减分"是针对持有驾驶证的驾驶人,因交通违法行为被记分,参加网上交通安全学习并考试合格后,予以减免记分的措施.& ...

  9. 今日头条点击链接跳转微信公众号、加好友、小程序的方法(今日头条引流到微信公众号)

    有时候我们可以在今日头条发布文章或评论时可以留下链接,当用户点击链接后跳转公众号.加好友界面:我们可以使用如下方法 一.使用工具 大家可以使用如下工具创建链接. 1.天天外链官网 二.可以生成链接的页 ...

最新文章

  1. [python,2018-06-29] 37%法则及其拓展解决恋爱问题
  2. java.lang.IllegalAccessError: org.apache.commons.dbcp.DelegatingPreparedStatement.isClosed()Z
  3. 用栈实现队列和用队列实现栈
  4. php图片等比例压缩,php实现图片上传并等比例压缩
  5. weblogic常见漏洞
  6. 装饰者模式源码解析(spring-session mybatis jdk servlet)
  7. 《BI那点儿事》数据流转换——派生列
  8. shell脚本样本_Shell脚本
  9. mysql索引背后的数据结构_MySQL索引背后的数据结构及算法原理
  10. android java 静态库_android的android.mk,和application.mk文件编写
  11. vscode php插件_「PHP从入门到颈椎病康复」基础篇——HelloWorld
  12. spring源码下载以及gradle的详细使用教程
  13. 常见概率抽样方法及其适用场景总结
  14. 广义相对论 的 一个问题
  15. 2022年中国云市场份额:阿里云腾讯云下降
  16. Verilog 序列信号发生器的三种设计思路
  17. 逆向笔记 | 破解极域学生端密码并实现窗口化屏幕广播
  18. 无人机无线Mesh自组网,CV5200远距离WiFi模组,实时通信传输技术
  19. Unity实现众多平台一键社会化分享(ShareSDK)
  20. Oracle项目管理系统之计划编制及进度计算

热门文章

  1. Qt文档阅读笔记-重现GUI事件进行单元测试
  2. Linux学习笔记-子目录的支持
  3. Qt中echo服务器的简单编写
  4. Qt工作笔记-使用QCustomplot实现鼠标拖动数据点画曲线
  5. C/C++ OpenCV图像的线性混合
  6. php符号 set,PHP 符号大全
  7. ipad怎么连接电脑_苹果连接电脑没反应怎么办
  8. 5.1.2全景声音箱摆位_全景声音响系统音箱应该如何摆位(5.1.2、5.1.4篇)
  9. python numpy array中维度的区别 array.shape
  10. 数据结构之二叉树的物理结构(存储结构)