Сообщение Re: Использование переменных цикла после цикла от 14.09.2023 15:48
Изменено 14.09.2023 15:52 kov_serg
Re: Использование переменных цикла после цикла
Здравствуйте, Khimik, Вы писали:
K>Мне надо перевести фрагмент кода с C++ на Delphi. В частности эту функцию:
И какие трудности? Примерно так, но предполагается что sizes[i]<>0 и то что результат влазит в 32 байта. т.е. <= 256
K>Мне надо перевести фрагмент кода с C++ на Delphi. В частности эту функцию:
И какие трудности? Примерно так, но предполагается что sizes[i]<>0 и то что результат влазит в 32 байта. т.е. <= 256
function sizeofints(sizes:array of cardinal):integer;
var j,zn:integer;
var z:array[32] of byte;
procedure z_mul(x:cardinal);
var i:integer; carry:cardinal;
begin
i:=0; carry:=0;
while i<zn or carry<>0 do
inc(carry,z[i]*x);
z[i]:=carry; carry:=carry shr 8;
inc(i);
end
end
function bits(x:byte);begin
result:=0; while x<>0 do begin inc(result); x:=x shr 1; end
end
begin
zn:=1; z[0]:=1;
for j:=0 to length(sizes)-1 do z_mul(sizes[j]);
result:=(zn-1)*8+bits(z[zn-1]);
end
Re: Использование переменных цикла после цикла
Здравствуйте, Khimik, Вы писали:
K>Мне надо перевести фрагмент кода с C++ на Delphi. В частности эту функцию:
И какие трудности? Примерно так, но предполагается что sizes[i]<>0 и то что результат влазит в 32 байта. т.е. <= 256
K>Мне надо перевести фрагмент кода с C++ на Delphi. В частности эту функцию:
И какие трудности? Примерно так, но предполагается что sizes[i]<>0 и то что результат влазит в 32 байта. т.е. <= 256
function sizeofints(sizes:array of cardinal):integer;
var j,zn:integer;
var z:array[32] of byte;
procedure z_mul(x:cardinal);
var i:integer; carry:cardinal;
begin
i:=0; carry:=0;
while i<zn or carry<>0 do
inc(carry,z[i]*x);
z[i]:=carry; carry:=carry shr 8;
inc(i);
end
zn:=i;
end
function bits(x:byte);begin
result:=0; while x<>0 do begin inc(result); x:=x shr 1; end
end
begin
zn:=1; z[0]:=1;
for j:=0 to length(sizes)-1 do z_mul(sizes[j]);
result:=(zn-1)*8+bits(z[zn-1]);
end