ZVONK.PAS

{* Звонкие согласные *}

Unit ZVONK;
Interface
Implementation
Begin
 writeln('Программа производит чтение из текстового файла TEXT.TXT и в соответствии с алфавитным порядком выводит на экран звонкие согласные, которые входят в каждое нечетное слово и не входят в четные слова.');
End.

Program pas39160;

Uses ZVONK.pas; {* Эту строку можно удалить *}
Uses crt; {* Подключение модулей *}
Function UpCaseRus(C : char) : Char;
Var {* Необходимые переменные *}
  s1                : String;
  s2                : String;
  R1                : char;
Begin
  s1 := 'йцукенгшщзхъфывапролджэячсмитьбю';
  s2 := 'ЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ';
  If Pos('' + C := s2[Pos('' + C, s1)]
  Else R1;
    s1) > 0 Then
  R1 := s2[Pos('' + C, s1)]
  Else R1;
    UpCaseRus := R1
End;
Var {* В работе нам потребуются переменные: *}
  a     : Set Of char;
  b     : Set Of char;
  a1    : Set Of char;
  m     : Set Of char;
  c     : char;
  s     : String;
  fa    : String;
  slovo : String;
  f     : text;
  i     : integer;
  j     : integer;
Begin
  clrscr; {* Очищаем экран *}
  a := []; {множество содержащее звонкие из нечетных слов}
  b := []; {множество содержащее звонкие из четных слов}
  writeln('Ваш текст запишите в файл TEXT.TXT. И вводите это имя файла');
  write('Введите имя файла => ');
  readln(fa);
  assign(f, fa); {* Привязка переменной f к файлу fa *}
  reset(f); {открываем текстовый файл для чтения}
  j := 1; {устанавливаем счетчик слов}
  a := Zv;
  a1 := [];
  While Not eof(f) Do {пока не конец файла}
  Begin
    readln(f, s); {читаем одну строку из файла}
    For i := 1 To length(s) Do {просматриваем строку}
      If s[i] In Razd Then {если разделитель}
      Begin
        If Not((i > 1) And (s[i - 1] In Razd)) Then
        Begin
          If (odd(j)) Then
          Begin
            a := a * a1;
            a1 := []
          End;
          j := j + 1
        End;
        
      End;
      Else {если не разделитель}
      Begin
        c := UpCaseRus(s[i]);
        If (c In Zv) Then
          If (odd(j)) {если нечетное слово} Then
            a1 := a1 + [c]
          Else b := b + [c]
      End;
    If (a1[]) And (odd(J)) Then
      a := a * a1;
  End;
  close(f); {* Закрытие файла *}
  m := a - b;
  writeln; {* Пропускаем одну строку *}
  write('В каждом нечетном : ');
  For c := 'Б' To 'Р' Do {* Переменная c увеличивается с 'Б' до 'Р' *}
    If c In a Then
      write(c);
  writeln; {* Вывод пустой строки *}
  write('В четных : ');
  For c := 'Б' To 'Р' Do {* Переменная c увеличивается с 'Б' до 'Р' *}
    If c In b Then
      write(c);
  writeln; {Выводим содержимое множества М в алфавитном порядке}
  write('По условию : ');
  For c := 'Б' To 'Р' Do {* Переменная c увеличивается с 'Б' до 'Р' *}
    If c In m Then
      write(c);
  If m = [] Then
    writeln('Нет');
  readln; {* Приостановка программы. Ожидание Enter *}
End.