Переворот строки

Автор: | 20.02.2013

Задача : Поменять местами символы в строке, так чтобы она развернулась в обратном порядке.

Решение : Строка в Delphi представляет собой массив символов. К каждому символу можно обращаться по его индексу. Все что от нас требуется это пройтись в цикле по строке в обратном порядке и записать этот обратный порядок в новую строку. Данную задачу можно решить несколькими путями. Мы разберем решение по средствам процедуры, а также напишем собственную функцию. Функция дает преимущество при повторении операций.

Код процедуры

[cc lang=»delphi» tab_size=»2″ line_numbers=»false» no_links=»false»]

procedure TForm1.Button1Click(Sender: TObject);
var              // раздел описания переменных процедуры
s, s1: string; // символом s  обычно обозначают локальную строковую переменную
i: integer;    // символом i  обычно обозначают локальную целую числовую переменную
begin
s := Edit1.Text; // Строка берётся из Edit1
for i := Length(s) — 0 downto 0 do  // запускаем убывающий цикл от числа длинны строки до 0
S1 := S1 + S[i]; //складываем символы в новую переменную
Showmessage(s1); // вывод развёрнутой строки в сообщение
end;

[/cc]

Код функции

[cc lang=»delphi» tab_size=»2″ line_numbers=»false» no_links=»false»]

function perevorot(s: string): string;
var // раздел описания переменных функции
i, j: integer;
Sr: string;
Begin
j := Length(s); // находим длинну строки
for i := 0 to Length(s) do // запускаем возрастающий цикл
begin
Sr := Sr + s[j];   //складываем символы в новую переменную
j := j — 1;   // уменьшаем индекс
end;
Result := Sr;  // переменной результат отдаем полученную строку
End;

[/cc]

Код вызова функции :

[cc lang=»delphi» tab_size=»2″ line_numbers=»false» no_links=»false»]

procedure TForm1.Button2Click(Sender: TObject);
begin
Showmessage(perevorot(Edit1.Text)); //вывод развёрнутой строки в сообщение, полученной в результате работы функции
end;

[/cc]

Так выглядит наш проект по окончании работ.

Capture

 

Переворот строки: 2 комментария

  1. lmikle

    Мдя… индусская лапша…
    Для переворота строки (мы говорим о классических строках, а не новомодних неизменяемых) не обязательно иметь доп. переменную и проходить циклом по всей стоке (а если строка так в гигабайт?).

    procedure Strreverse(var S : String);
    var
    I, L : Integer;
    C : Char;
    begin
    L := Length(S);
    For I := 1 To L div 2 Do // 1-base string
    Begin
    C := S[I];
    S[I] := S[L-I+1];
    S[L-I+1] := C;
    End;
    end;

    Для функции можно сразу использовать Result для конкатенации строки, а не вводить доп. переменную Sr.

    1. blog

      Согласен с Вами, дорогой товарищ.
      По-прежнему жду Ваших статей для размещения.
      Статью можно дополнить ещё комментарием Капитана Очевидность, он нам подсказывает заглянуть в справку и говорит, что есть родная функция ReverseString(const AText: string): string; И живет она в модуле System.StrUtils, который при использовании нужно прописать в USES

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *