Показать сообщение отдельно
Старый 29.10.2019, 12:02   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Постараюсь помочь, чем могу.
К сожалению, на Delphi я не пишу (когда-то занимался этим, да всё забыл), поэтому обойдёмся Паскалем. Чтобы не возиться с дельфийскими формами, ввод/вывод я сделал файловым. Входной файл Sl.txt содержит исходный текст. Текст может содержать множественные пробелы, знаки препинания, переводы строки и т.п. — всё обработается. НО! ВНИМАНИЕ — ВАЖНО! Никакой кириллицы: программа обрабатывает ТОЛЬКО латиницу. Впрочем, расширить код для работы с кириллицей, в принципе, несложно.
Результат выводится в файл Smb.txt.
Пути к файлам поставьте свои.
Для Delphi следует также заменить команды Assign и Close на AssignFile и CloseFile, соответственно.
Булева функция L проверяет, является ли символ буквой.
Код:
type
  slovo = array [1..60] of String;
var
  f:Text;
  C:slovo;
  D:Char;
  i,N:integer;

function L(Q:Char):boolean;
begin
 L:=((Ord(Q)>64) and (Ord(Q)<91)) or ((Ord(Q)>96) and (Ord(Q)<123));
end;

Begin
 Assign(f,'D:\Sl.txt');
 ReSet(f);
 N:=0;
 Repeat
  if Not(EoF(f)) then
   begin
    Inc(N);
    if N>1 then C[N]:=D else C[N]:='';
    repeat
     if Not(EoF(f)) then
      begin
       read(f,D);
       if L(D) then C[N]:=C[N]+D;
      end;
    until Not(L(D)) or (EoF(f));
    repeat
     read(f,D);
    until (L(D)) or (EoF(f));
   end;
 Until EoF(f);
 Close(f);
 Assign(f,'D:\Smb.txt');
 Rewrite(f);
 for i:=1 to N do
  write(f, C[i][Length(C[i])]+' ');
 Close(f);
End.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070