В алфавитном порядке вывести все звонкие согласные, которые входят в каждое нечетное слово и не входят ни в одно четное слово — Pascal(Паскаль)

 {В алфавитном порядке вывести все звонкие согласные, которые входят
  в каждое нечетное слово и не входят ни в одно четное слово.}
program bukva;

function UpCaseRus(C:char):Char;
var s1,s2:string;
    R1:char;
begin
   s1:='йцукенгшщзхъфывапролджэячсмитьбю';
   s2:='ЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ';
   if Pos(''+C,s1)>0
      then R1:=s2[Pos(''+C,s1)]
      else R1:=C;
   UpCaseRus:=R1
end;
const Razd=[' ','.','!','?'];
const Zv  =['Б','В','Г','Д','Ж','З','Л','М','Н','Р'];
var a,b,a1,m:set of char;
    c:char;
    s,fa,slovo:string;
    f:text;
    i,j:integer;
begin
     a:=[];{множество содержащее звонкие из нечетных слов}
     b:=[];{множество содержащее звонкие из четных слов}
     writeln('Ваш текст запишите в файл TEXT1.PAS.И вводите это имя файла');
     write('Введите имя файла =>');readln(fa);
     assign(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;

     write('В каждом нечетном:');
     for c:='Б' to 'Р' do if c in a then write(c); writeln;
     write('В четных:');
     for c:='Б' to 'Р' do if c in b then write(c); writeln;
     {Выводим содержимое множества М в алфавитном порядке}
     write('По условию:');
     for c:='Б' to 'Р' do if c in m then write(c);
     if m=[] then writeln('Нет');
end.

Leave a Comment

59 − = 50