Показать сообщение отдельно
  #3  
Старый 14.05.2007, 08:44
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,907
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

А что, сами думать уже разучились???
Для второго задания (первое если честно не понял о чем):
На форме Memo1 и Memo2 (в первый Мемо вводится исходный набор символов, вывод результирующего - во второй Мемо), на форму кидаем кнопку и в ее обработчик OnClick пишем следующее:
Код:
var
  i:integer;
  before,after:string;
  currentPos:integer;
begin
  //Удаляем все не относящиеся к теме символы
  before:=Memo1.Lines.Text;
  for i:=1 to Length(before) do
    if not(before[i] in ['А'..'Я']) then
      before[i]:=',';
  before:=StringReplace(before,',','',[rfReplaceAll]);
  after:='';
  {Обработка, в результат не будут выводится токены
    завершающий "К" и
    начальный "Р"!!!!}
  //Ищем все "строки ДО К" (в общем случае их больше одной)
  currentPOS:=1;
  repeat
    currentPOS:=PosEx('К',before,currentPos);
    after:=after+LeftStr(before,currentPos-1);
  until currentPos<>0;
  //ищем все "подстроки ПОСЛЕ Р" та же фигня что и для предыдущего
  currentPOS:=1;
  repeat
    currentPOS:=PosEx('Р',before,currentPos);
    after:=after+RightStr(before,Length(before)-currentPos);
  until currentPOS<>0;
  Memo2.Lines.Text:=after;
end;
я это даже тестил, работает. причем зассматривается случай что токены "Р" и "К" встречаются больше одного раза, следовательно результирующая последовательность в общем случае может быть больше начальной. Так же отслеживается неправильный ввод исходных данных, все токены не относящаеся к заданному в задаче множеству просто выкидываются из исходных данных.
Ответить с цитированием