Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Задачи на Pascal/Object Pascal/Free Pascal (Delphi/Lazarus)

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

Открыть новую тему     Написать ответ в эту тему

SERGE_BLIZNUK

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору


Код:
 
 
const
  Povtor = '#повтор#';
  WordDelimiters : set of char = [' ',',','.','-','!','?',':',';',')','('];
   
var
  S, NewString, EndS : string;
  OneWord, CurWord : string;
  i, j : integer;
begin
  {Readln(S);}
  S := 'вот будет пример строчки, вот в ней слова, и вот будет на слова готова, вот.';
 
  WriteLn;
  WriteLn('Строка до обработки:');
  WriteLn(S);
  WriteLn;
   
  OneWord := '';
  NewString := '';
  i:=1;
  while i<=length(S) do begin
    if S[i] in WordDelimiters then begin
      NewString := NewString + OneWord + S[i];
      if OneWord<>'' Then
        {нашли одно слово}
        if OneWord <> Povtor then begin
          {обработаем строчку S от символа с номером i+1 до конца}
          EndS := '';
          CurWord := '';
          for j:=i+1 to Length(S) do begin
            if S[j] in WordDelimiters then begin
              if (CurWord<>'') and (CurWord=OneWord) then
                EndS := EndS + Povtor + S[j]
              else
                EndS := EndS + CurWord + S[j];
              CurWord := '';
            end
            else
              CurWord := CurWord + S[j];
          end;
          {это если до конца строки дошли, а в конце нет разделителя}
          if (CurWord<>'') and (CurWord=OneWord) then
            EndS := EndS + Povtor
          else
            EndS := EndS + CurWord;
 
          {ВНИМАНИЕ! строчку с заменённым кодом переносим в S}
          S := NewString + EndS;
 
        end;
      OneWord := '';
    end
    else
      OneWord := OneWord + S[i];
    i := i + 1;
  end;
 
  if OneWord<>'' Then NewString := NewString + OneWord;
 
  WriteLn('Строка после обработки:');
  WriteLn(NewString);
 
end.
 
 


Всего записей: 2014 | Зарегистр. 12-09-2002 | Отправлено: 00:07 09-11-2007
Открыть новую тему     Написать ответ в эту тему

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Задачи на Pascal/Object Pascal/Free Pascal (Delphi/Lazarus)


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru