zadach313.PAS

{* Задача 313 *}

Unit ZADACH313;
Interface
Implementation
Begin
 writeln('Даны два текстовых файла f1 и f2. Файл f1 содержит произвольный текст. Слова в тексте разделены пробелами и знаками препинания. Файл f2 содержит не более 30 слов, которые разделены запятыми. Эти слова образуют пары: каждое второе является синонимом первого. Заменить в файле f1 те слова, которые можно, их синонимами. Результат поместить в новый файл.');
End.

Program zadach313;

Uses zadach313.pas; {* Эту строку можно удалить *}
Uses crt; {* Подключение модулей *}
Const {* Предопределенные *}
  pr = [' ''.'', ''?''!'':''('')',#9,#10,#13];
Var {* Объявление переменных *}
  s     : char;
  f1    : text;
  f2    : text;
  f3    : text;
  slovo : String;
  sin1  : Array [1..15] Of String;
  sin2  : Array [1..15] Of String;
  i     : integer;
  k     : integer;
Begin
  clrscr; {* Очистка экрана *}
  assign(f1, 'c:f1.txt'); {* Подключение к файлу 'c:f1.txt' через переменную f1 *}
  reset(f1); {* Открытие файла для чтения *}
  assign(f2, 'c:f2.txt'); {* Привязка переменной f2 к файлу 'c:f2.txt' *}
  reset(f2); {* Чтение из файла через переменную f2 *}
  assign(f3, 'c:f3.txt'); {* Связывание f3 с файлом 'c:f3.txt' *}
  rewrite(f3); {* Открытие файла для записи *}
  i := 1;
  While Not(EOF(f2)) Do
  Begin
    read(f2, s);
    If ord(s) In [128..143] Then
      s := chr(ord(s) + 32);
    If ord(s) In [144..159] Then
      s := chr(ord(s) + 80);
    If Not(s In pr) And Not EOF(f2) Then
      slovo := slovo + s
    Else Begin
      If slovo'' Then
      Begin
        If (i Mod 2)  0 Then
          sin1[round(i / 2 + 0.5)] := slovo
        Else sin2[round(i / 2)] := slovo;
          i := i + 1;
        slovo := '';
      End;
    
  End;
  
End;
While Not(EOF(f1)) Do
Begin
  read(f1, s);
  If ord(s) In [128..143] Then
    s := chr(ord(s) + 32);
  If ord(s) In [144..159] Then
    s := chr(ord(s) + 80);
  If Not(s In pr) And Not EOF(f1) Then
    slovo := slovo + s
  Else Begin
    For i := 1 To 15 Do {* Переменная i увеличивается с 1 до 15 *}
    Begin
      If slovo = sin1[i] Then
      Begin
        slovo := sin2[i];
        k := 1;
      End;
      Else k := 0;
        If (slovo = sin2[i]) And (k = 0) Then
          slovo := sin1[i];
    End;
  write(f3, slovo, s);
  slovo := '';
End;

End;
close(f1); {* Закрытие файла *}
close(f2); {* Файл f2 будет закрыт *}
close(f3); {* Закрыть файл f3 *}
End....