Доброго времени суток.
Давно не писал около 10 лет на дельфи. Попался код:
Procedure Update(var AStr: String);
var
i: Integer;
i64: Int64;
j: Integer;
ch: Char;
begin
for i := 1 to Length(AStr) do begin
i64 := i;
for j := 0 to Length(AStr) do begin
if j <> i then
i64 := i64 + ord(AStr[j]) * j;
while i64 > Length(AStr) do
i64 := i64 - Length(AStr);
end;
j := i64;
ch := AStr[j];
AStr[j] := AStr[i];
AStr[i] := ch;
end;
Теперь несколько вопросов:
1. Что эта хрень делает?
2. Как понимать
ord(AStr[j]) при нулевом
j.
3.
Основное: как это будет выглядеть на C++?