Сообщение Re[2]: Использование переменных цикла после цикла от 14.09.2023 8:54
Изменено 14.09.2023 8:55 Khimik
Re[2]: Использование переменных цикла после цикла
Здравствуйте, T4r4sB, Вы писали:
TB>Да. Используй цикл while, потому что for в С++ и Дельфи не всегда невзаимозаемы.
TB>Одно в другое можно перевести только в простом случает когда переменная цикла объявляется прямо в заголовке цикла, имеет соавнение с числом в качестве верхнего условия и инкремент/декремент на единичку в качестве перехода
Ок, вот этот перевод корректный?
TB>Да. Используй цикл while, потому что for в С++ и Дельфи не всегда невзаимозаемы.
TB>Одно в другое можно перевести только в простом случает когда переменная цикла объявляется прямо в заголовке цикла, имеет соавнение с числом в качестве верхнего условия и инкремент/декремент на единичку в качестве перехода
Ок, вот этот перевод корректный?
function cbsizeofints(num_of_ints: Integer; sizes: array of int64): Integer;
var
i, num: Integer;
num_of_bytes, num_of_bits, bytecnt, tmp: int64;
bytes: array[0..31] of int64;
begin
num_of_bytes := 1;
bytes[0] := 1;
num_of_bits := 0;
for i := 0 to num_of_ints - 1 do
begin
tmp := 0;
bytecnt:=0;
while bytecnt<num_of_bytes - 1 do
begin
tmp := bytes[bytecnt] * sizes[i] + tmp;
bytes[bytecnt] := tmp and $ff;
tmp := tmp shr 8;
inc(bytecnt);
end;
while tmp <> 0 do
begin
bytes[bytecnt] := tmp and $ff;
tmp := tmp shr 8;
Inc(bytecnt);
end;
num_of_bytes := bytecnt;
end;
num := 1;
Dec(num_of_bytes);
while bytes[num_of_bytes] >= num do
begin
Inc(num_of_bits);
num := num * 2;
end;
Result := num_of_bits + num_of_bytes * 8;
end;
Re[2]: Использование переменных цикла после цикла
Здравствуйте, T4r4sB, Вы писали:
TB>Да. Используй цикл while, потому что for в С++ и Дельфи не всегда невзаимозаемы.
TB>Одно в другое можно перевести только в простом случает когда переменная цикла объявляется прямо в заголовке цикла, имеет соавнение с числом в качестве верхнего условия и инкремент/декремент на единичку в качестве перехода
Ок, вот этот перевод корректный?
Тут мне не совсем понятно, если превращать for в while, инкремент надо ставить в начале теле цикла, или в конце.
TB>Да. Используй цикл while, потому что for в С++ и Дельфи не всегда невзаимозаемы.
TB>Одно в другое можно перевести только в простом случает когда переменная цикла объявляется прямо в заголовке цикла, имеет соавнение с числом в качестве верхнего условия и инкремент/декремент на единичку в качестве перехода
Ок, вот этот перевод корректный?
function cbsizeofints(num_of_ints: Integer; sizes: array of int64): Integer;
var
i, num: Integer;
num_of_bytes, num_of_bits, bytecnt, tmp: int64;
bytes: array[0..31] of int64;
begin
num_of_bytes := 1;
bytes[0] := 1;
num_of_bits := 0;
for i := 0 to num_of_ints - 1 do
begin
tmp := 0;
bytecnt:=0;
while bytecnt<num_of_bytes - 1 do
begin
tmp := bytes[bytecnt] * sizes[i] + tmp;
bytes[bytecnt] := tmp and $ff;
tmp := tmp shr 8;
inc(bytecnt);
end;
while tmp <> 0 do
begin
bytes[bytecnt] := tmp and $ff;
tmp := tmp shr 8;
Inc(bytecnt);
end;
num_of_bytes := bytecnt;
end;
num := 1;
Dec(num_of_bytes);
while bytes[num_of_bytes] >= num do
begin
Inc(num_of_bits);
num := num * 2;
end;
Result := num_of_bits + num_of_bytes * 8;
end;
Тут мне не совсем понятно, если превращать for в while, инкремент надо ставить в начале теле цикла, или в конце.