bgg46.PAS

{* Задача 46 *}

Unit BGG46;
Interface
Implementation
Begin
 writeln('Файл input.dat содержит несколько строк текста. Слова в текс- те могут разделяться пробелами и знаками препинания. Переписать текст в файл output.dat, удалив из текста слова, содержащие две подряд идущие гласные или две подряд идущие согласные буквы.');
End.

Program bgg46;

Uses bgg46.pas; {* Эту строку можно удалить *}
Var {* Объявление переменных *}
  ff  : text;
  tt  : text;
  i   : integer;
  j   : integer;
  a   : String;
  s   : String;
  sog : Set Of 'a'..'z';
  gla : Set Of 'a'..'z';
  k   : boolean;
Procedure dva(y : String);
Begin
  If ((y[1] In sog)And(y[2] In sog))Or((y[1] In gla)And(y[2] In gla)) Then
    k := false;
End;
Begin
  sog := ['a''e''i''o''u''y'];
  gla := ['q''w''r''t''p''s''d''f''g''h''j''k''l''z''x''c''v''b''n''m'];
  assign(ff, 'c:/input.dat'); {* Привязка переменной ff к файлу 'c:/input.dat' *}
  reset(ff); {* Подготовка переменной ff для чтения из файла *}
  assign(tt, 'c:/output.dat'); {* Связывание tt с файлом 'c:/output.dat' *}
  rewrite(tt); {* Открытие файла для записи *}
  k := true;
  While Not eof(ff) Do {* Если в файле ещё есть данные, то продолжаем *}
  Begin
    readln(ff, a);
    a := a + ' ';
    For i := 1 To length(a) Do {* Переменная i увеличивается с 1 до length(a) *}
      If a[i]' ' Then
        s := s + a[i]
      Else Begin
        For j := 1 To length(s) - 1 Do {* Увеличиваем j от 1 до length(s) с шагом 1 *}
          dva(copy(s, j, 2));
    If k Then
      write(tt, s + ' ');
    s := '';
    k := true;
  End;
  writeln(tt);
End;
close(ff); {* Закрытие файла *}
close(tt); {* Закрытие файла *}
End.....