永发信息网

Pascal高精度连减(不存在负数)

答案:1  悬赏:40  手机版
解决时间 2021-04-01 10:05
  • 提问者网友:一抹荒凉废墟
  • 2021-03-31 20:35
Pascal高精度连减(不存在负数)
最佳答案
  • 五星知识达人网友:妄饮晩冬酒
  • 2021-03-31 22:04
以下是用字符串作为变量和函数值的高精度减法函数。供参考。

function minus(x,y:string):string;
var
z:string;
a,b:array[1..250] of shortint;
c:array[1..250] of shortint;
ch:string[1];
ia,ib,ic:integer;
i,k:integer;
p:integer;
begin
ia:=length(x);  {x放较大的数,y放较小的数}
ib:=length(y);
for i:=1 to 250 do begin a[i]:=0; b[i]:=0; c[i]:=0; end;
for i:=1 to ia do a[i]:=ord(x[ia+1-i])-ord('0');
for i:=1 to ib do b[i]:=ord(y[ib+1-i])-ord('0');
if ia>ib then ic:=ib else ic:=ia;
p:=0;  {借位}
for i:=1 to ic do begin
if p=0 then begin
if a[i]>=b[i] then c[i]:=a[i]-b[i]
else begin c[i]:=a[i]-b[i]+10; p:=-1; end;   
end else begin
if a[i]+p>=b[i] then c[i]:=a[i]+p-b[i]
else begin c[i]:=a[i]+p-b[i]+10; p:=-1; end;
end;
end;
for i:=ic+1 to ia do begin 
if a[i]+p>=0 then c[i]:=a[i]+p
else begin c[i]:=a[i]+p+10; p:=-1; end; 
end;
for i:=250 downto 1 do if c[i]<>0 then 
begin k:=i; break; end;
z:='';
for i:=k downto 1 do begin str(c[i]:1,ch); z:=z+ch; end;
minus:=z;
end;
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯