Показать сообщение отдельно
  #10  
Старый 18.03.2013, 19:51
Аватар для BBBCat
BBBCat BBBCat вне форума
Новичок
 
Регистрация: 10.03.2013
Сообщения: 73
Репутация: 10
По умолчанию

Да, нечётные всё портят. Строго с чётными:
Код:
  L := Length(Edit1.Text);
  SetLength(S, L);
  for I := 1 to L do
  begin
    if I mod 2 = 0 then Continue;
    S[L-I] := Edit1.Text[i];
    S[L-I+1] := Edit1.Text[I+1];
  end; // for I := 1 to L shr 1 do
  Edit1.Text := S;
Ну а с любыми некрасиво:
Код:
  L := Length(Edit1.Text);
  if L mod 2 <> 0 then
  begin
    Edit1.Text := Edit1.Text + #1;
    Inc(L);
  end; // if L mod 2 <> 0 then
  SetLength(S, L);
  for I := 1 to L do
  begin
    if I mod 2 = 0 then Continue;
    S[L-I] := Edit1.Text[i];
    S[L-I+1] := Edit1.Text[I+1];
  end; // for I := 1 to L shr 1 do
  if S[2] = #1 then
    Delete(S, 2, 1);
  Edit1.Text := S;
Забавный эффект - при нечётной длине символы возвращаются на своё место после числа перестановок равного длине строки.
Ответить с цитированием