Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > [Delphi 7] Перемешивание букв в тексте


Автор: n01r 7.6.2009, 19:54
Дан в поле memo любой текст, необходимо буквы в тексте перемешать и потом вернуть все буквы на свои места

Код

Например вот такие хаотично набранные буквы

в
 
Намрипер вот катие хаиточно набарнные кубыв



Автор: kami 7.6.2009, 20:09
Цитата(n01r @  7.6.2009,  19:54 Найти цитируемый пост)
и потом вернуть все буквы на свои места

это как?
Запоминать последовательность перемешивания что ли?
Проще запомнить исходный текст.

И - буквы должны мешаться только в пределах своего слова?

Автор: n01r 7.6.2009, 20:29
Цитата(kami @ 7.6.2009,  20:09)
Цитата(n01r @  7.6.2009,  19:54 Найти цитируемый пост)
и потом вернуть все буквы на свои места

это как?
Запоминать последовательность перемешивания что ли?
Проще запомнить исходный текст.

И - буквы должны мешаться только в пределах своего слова?

Да, лучше просто вернуть исходный текст=)
Буквы должны мешаться только в пределах своего слова

Автор: n01r 7.6.2009, 21:44
как преобразить этот код

Код

procedure TForm1.Button1Click(Sender: TObject);
var
s:string;
i,j,len:integer;
x:char;
begin
  randomize;
  len := length(memo1.text);
  setlength(s,len);
  s := memo1.text;
  for i := 1 to len-1 do
    for j := i+1 to len do
      if random(31337) mod 7 = 0 then begin
        x := s[i];
        s[i] := s[j];
        s[j] := x;
        end;
    Memo1.Text := s;
    end;


Вместо текста какая абракадабра появляеться, буквы которые не были в тексте

Автор: kami 7.6.2009, 22:13
Задача разбивается на следующие под-задачи:
1. Найти слово.
2. Перемешать в нем буквы.
3. Добавить перемешанное слово к результату.

подзадача 1 легко решается изменением кода http://forum.vingrad.ru/forum/topic-261475.html. Всего-то нужно заменить в нем (коде) точку на пробел.
подзадача 2: код приведен вами. На первый взгляд - проблем в нем нет.
подзадача 3: в качестве приемника результата просто использовать другой TMemo.

Добавлено через 1 минуту и 1 секунду
Только насчет подзадачи 2 - нужно, естественно, не использовать полный текст, а задействовать в нем найденное в подзадаче 1 слово.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)