Free Pascal高精度乘法高对高
答案:1 悬赏:0 手机版
解决时间 2021-04-04 01:22
- 提问者网友:泪痣哥哥
- 2021-04-03 07:30
Free Pascal高精度乘法高对高
最佳答案
- 五星知识达人网友:行路难
- 2021-04-03 09:03
type arr=array[1..1000] of integer; //定义一个数据类型
var a,b:arr; //用来存数的数组
s,s1:string; //用来存数的字符串
function Mul(number1,number2:arr):arr;//乘法计算函数
var i,j,lenNUM1,lenNUM2,bit:integer;
temp:arr;
begin
fillchar(temp,sizeof(temp),0);
//------------
lenNUM1:=1000;
while (number1[lenNUM1]=0)and(lenNUM1>1) do dec(lenNUM1);
lenNUM2:=1000;
while (number2[lenNUM2]=0)and(lenNUM2>1) do dec(lenNUM2);
//-----------计算位数
for i:=1 to lenNUM1 do
for j:=1 to lenNUM2 do
begin
bit:=i+j-1;
temp[bit]:=temp[bit]+number1[i]*number2[j];
temp[bit+1]:=temp[bit+1]+temp[bit] div 10;
temp[bit]:=temp[bit] mod 10;
end;
//相乘,一般背下来就行了
Mul:=temp; //返回结果
end;
procedure print(a:arr); //输出结果的过程
var i,len:integer;
begin
//算长度
len:=1000;
while (a[len]=0)and(len>1) do dec(len);
for i:=len downto 1 do write(a[i]);
//反过来输出
end;
procedure setv(s:string;var a:arr); //将输入的字符串变成数组的过程
var i,j,p:integer;
begin
j:=length(s)+1;
for i:=1 to length(s) do
begin
dec(j);
val(s[j],a[i],p);
end;
//把字符串倒转存入数组
end;
begin
readln(s);
readln(s1);//读入
setv(s,a);
setv(s1,b); //放入数组
print(Mul(a,b)); //相乘并打印
end.
var a,b:arr; //用来存数的数组
s,s1:string; //用来存数的字符串
function Mul(number1,number2:arr):arr;//乘法计算函数
var i,j,lenNUM1,lenNUM2,bit:integer;
temp:arr;
begin
fillchar(temp,sizeof(temp),0);
//------------
lenNUM1:=1000;
while (number1[lenNUM1]=0)and(lenNUM1>1) do dec(lenNUM1);
lenNUM2:=1000;
while (number2[lenNUM2]=0)and(lenNUM2>1) do dec(lenNUM2);
//-----------计算位数
for i:=1 to lenNUM1 do
for j:=1 to lenNUM2 do
begin
bit:=i+j-1;
temp[bit]:=temp[bit]+number1[i]*number2[j];
temp[bit+1]:=temp[bit+1]+temp[bit] div 10;
temp[bit]:=temp[bit] mod 10;
end;
//相乘,一般背下来就行了
Mul:=temp; //返回结果
end;
procedure print(a:arr); //输出结果的过程
var i,len:integer;
begin
//算长度
len:=1000;
while (a[len]=0)and(len>1) do dec(len);
for i:=len downto 1 do write(a[i]);
//反过来输出
end;
procedure setv(s:string;var a:arr); //将输入的字符串变成数组的过程
var i,j,p:integer;
begin
j:=length(s)+1;
for i:=1 to length(s) do
begin
dec(j);
val(s[j],a[i],p);
end;
//把字符串倒转存入数组
end;
begin
readln(s);
readln(s1);//读入
setv(s,a);
setv(s1,b); //放入数组
print(Mul(a,b)); //相乘并打印
end.
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯