strings27.PAS

{* Задача 27 *}

Unit STRINGS27;
Interface
Implementation
Begin
 writeln('Задан текст, состоящий из строк произвольной длины. Строки разделяются одним или несколькими символами, называемыми разделителями. Разделители одинаковы для всего текста. Текст заканчивается комбинацией двух специальных символов, отличных от разделителя.
Выполнить над текстом последовательность действий, указанную в задании.

а) Определить порядковые номера, считая от начала текста, определенных слогов, которые задаются в исходных данных;
б) сформировать новый текст, в котором каждый такой слог заключен в кавычки.
'
);
End.

Program strings27;

Uses strings27.pas; {* Эту строку можно удалить *}
Uses crt; {* Вызов внешних функций *}
Const {* Постоянные значения *}
  n = 120; {Максимальное количество строк, читаемое из файла}
Var {* В работе нам потребуются переменные: *}
  fin            : Text;
  fout           : Text; {Входной и выходной файлы}
  s              : Array [1..n] Of String{Текст - массив строк}
  substr         : String{Искомый слог - подстрока}
  i              : integer;
  k              : integer;
  p              : integer;
  counter        : integer;
  start          : integer;
  cumulative_len : integer;
Begin
  clrscr; {* Очищаем экран *}
  assign(fin, 'input.txt'); {Открываем входной файл}
  reset(fin); {* Подготовка переменной fin для чтения из файла *}
  assign(fout, 'output.txt'); {Открываем выходной файл}
  rewrite(fout); {* Открытие файла для записи *}
  k := 0; {Количество строк во входном файле}
  While (Not eof(fin) And (k 0 Then
  Begin
    insert('"', s[i], start + p + length(substr));
    insert('"', s[i], start + p);
    writeln(cumulative_len, ' ', start, ' ', p, ' ', counter);
    writeln('=>', cumulative_len + start + p - 2 * counter, ' ');
    inc(start, p + length(substr) + 2); {* Увеличиваем start, p + length(substr) + 2 на 1 *}
    inc(counter); {* Прибавим к counter единицу *}
  End;
  Until p = 0;
  inc(cumulative_len, length(s[i]) - 2 * counter); {* Увеличиваем cumulative_len, length(s[i]) - 2 * counter на 1 *}
  writeln(fout, s[i]);
End;

  End;
Repeat
  Until keypressed; {* Цикл, пока не нажата клавиша *}
  close(fin); {закрываем файлы}
close(fout); {* Закрыть файл fout *}
End.....