|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Помогите с перемешиванием текста!
Как перемешать текст? в тексте нет пробела и должно перемешивается по 3 символа.
Кто нибудь помогите, пожалуйста. |
#2
|
||||
|
||||
Может я не так понял:
Код:
procedure TForm1.Button1Click(Sender: TObject); var i1, i2, i3: Integer; s: String; t, t2: Char; begin Randomize; i1:=Random(Length(Edit1.Text)) + 1; i2:=Random(Length(Edit1.Text)) + 1; i3:=Random(Length(Edit1.Text)) + 1; s:=Edit1.Text; t:=s[i2]; t2:=s[i3]; s[i2]:=s[i1]; s[i3]:=t; s[i1]:=t2; Edit1.Text:=s; end; Что делать, когда сломался комп: 1. Если вы юзер - делать ноги. 2. Если ремонтник - делать деньги. 3. Если вы программист - делать вид, что так было задумано. |
#3
|
|||
|
|||
Мне нужно чтоб перемешивались по 3 символа и чтоб целостность этих символов не нарушалось. Например: randomize -> izedomran или domranize и тп. Заранее спасибо
|
#4
|
||||
|
||||
Вот тебе функция... (проверено - работает)
SrcStr - исходный текст. Count - по сколько разбивать. Код:
function TForm1.Scrambler(SrcStr: string; Count: integer): string; var S: TStringList; i,n: Integer; begin Result:=''; if Count >= length(SrcStr) then begin Application.MessageBox('Слишком короткий текст', 'Error',mb_OK+mb_ICONERROR); Exit; end; S:=TStringList.Create; for i:=0 to (length(SrcStr) div Count) do S.Add(Copy(SrcStr,Count*i+1,Count)); Randomize; i:=0; while i<>(length(SrcStr) div Count)+1 do begin n:=Random((length(SrcStr) div Count)+1); if S.Strings[n]<>'*' then begin Result:=Result+S.Strings[n]; S.Strings[n]:='*'; inc(i); end; end; S.Free; end; Использовать так: Edit1.Text:= Scrambler('Randomize', 3); |