Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 01.04.2008, 14:13
Elven_Fun Elven_Fun вне форума
Прохожий
 
Регистрация: 25.11.2007
Сообщения: 3
Репутация: 10
Вопрос Помогите с перемешиванием текста!

Как перемешать текст? в тексте нет пробела и должно перемешивается по 3 символа.
Кто нибудь помогите, пожалуйста.
Ответить с цитированием
  #2  
Старый 01.04.2008, 14:36
Аватар для The Shadow
The Shadow The Shadow вне форума
Продвинутый
 
Регистрация: 11.06.2007
Адрес: Уфа, Россия
Сообщения: 793
Репутация: 35
По умолчанию

Может я не так понял:
Код:
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  
Старый 01.04.2008, 15:07
Elven_Fun Elven_Fun вне форума
Прохожий
 
Регистрация: 25.11.2007
Сообщения: 3
Репутация: 10
По умолчанию

Мне нужно чтоб перемешивались по 3 символа и чтоб целостность этих символов не нарушалось. Например: randomize -> izedomran или domranize и тп. Заранее спасибо
Ответить с цитированием
  #4  
Старый 02.04.2008, 19:39
Аватар для AXS
AXS AXS вне форума
Новичок
 
Регистрация: 26.11.2006
Адрес: РК г. Талдыкорган
Сообщения: 67
Репутация: 15
По умолчанию

Вот тебе функция... (проверено - работает)
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);
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 14:57.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter