zoukankan      html  css  js  c++  java
  • 高精度加减乘法小程序 Ver 0.9.5 beta

    第一版见:http://www.cnblogs.com/Catch-22/archive/2012/11/05/2756004.html 

    Ver 0.9.5 Beta

    本版修正了乘积为0时无输出的Bug(感谢luogu.org的数据)

      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 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 if Tt>=xx Then Writeln(0) Else Writeln;//Thanks For Luogu.org 's Data. 108 End; 109 Begin 110 While True Do 111 Begin 112 Writeln('高精度数字计算器 Ver 0.9.5 Beta Done By Catch-22.S.Iris'); 113 Writeln('本计算器暂时只支持加减乘三则运算,其他运算更新中...'); 114 Writeln('请不要拿无聊的超多位数来BS本程序,谢谢合作.'); 115 Writeln('请输入要计算的两个高精度数字:'); 116 Write('请输入第一个数字,并换行:'); 117 Readln(a); 118 Write('请输入第二个数字,并换行:'); 119 Readln(b); 120 la:=length(a); 121 lb:=Length(b); 122 Writeln('计算中..'); 123 FillChar(c,Sizeof(c),0); DC:=0; 124 Write(a,'+',b,'='); 125 Plus(a,b); 126 FillChar(c,Sizeof(c),0); DC:=0; 127 Write(a,'-',b,'='); 128 Minus(a,b); 129 FillChar(c,Sizeof(c),0); DC:=0; 130 Write(a,'*',b,'='); 131 Multiply(a,b); 132 Writeln('谢谢使用,如需继续计算请输入11,如不需要请输入任意字符'); 133 Readln(a); 134 if a<>'11' Then 135 Begin 136 Writeln('Thank You.'); 137 For la:=1 to Maxlongint Shr 4 do lb:=1; 138 Exit; 139 End; 140 End; 141 End.

    EXE:http://yunpan.cn/Qbbtc522V2Sar

  • 相关阅读:
    DOM几个场景的优化场景?
    git查看commit提交的内容
    Win10 右键卡顿解决办法
    Unity4中的lightmap怎么在Unity5及其以上版本中使用
    vscode 安装了vetur插件vue html没有智能提示
    vant安装后没有样式
    docker 使用命令
    element ui 第一次点击排序为倒序
    vue强制渲染页面
    vue element el-tooltip自定义样式
  • 原文地址:https://www.cnblogs.com/Catch-22/p/3376384.html
Copyright © 2011-2022 走看看