Pascal. Дана непустая последовательность слов из строчных русских букв; между соседними словами – запятая, за последним словом – точка. Напечатать звонкие согласные буквы, которые входят в каждое нечетное слово и не входят ни в...

Pascal. Дана непустая последовательность слов из строчных русских букв; между соседними словами – запятая, за последним словом – точка. Напечатать звонкие согласные буквы, которые входят в каждое нечетное слово и не входят ни в одно четное слово в алфавитном порядке все.
Гость
Ответ(ы) на вопрос:
Гость
Вариант для тех, кто любит и понимает множества. const   cs='бвгджз'; var   s:string;   i:integer;   c:char;   p,csg:set of char; begin   Writeln('Введите текст, разделяя слова запятыми, в конце поставьте точку');   Readln(s);   p:=[];   for i:=1 to Length(cs) do Include(csg,cs[i]); { инициализация множества }   s:=LowerCase(s); { приведение к нижнему регистру }   i:=1; c:=s[1];   while c<>'.' do begin     { обработка нечетного слова }     while not (c in [',','.']) do begin       if (c in csg) and not (c in p) then Include(p,c);       i:=i+1;       c:=s[i]     end;     { обработка четного слова }     if c<>'.' then begin i:=i+1; c:=s[i] end;     while not(c in [',','.']) do begin       if (c in csg) and (c in p) then Exclude(p,c);       i:=i+1;       c:=s[i]     end;     if c<>'.' then begin i:=i+1; c:=s[i] end   end;   s:='';   for i:=1 to Length(cs) do if cs[i] in p then Write(cs[i]) end. Тестовое решение: Введите текст, разделяя слова запятыми, в конце поставьте точку Это,пример,текста,созданного,для,проверки,программы. гд Вариант для тех, кто с множествами не дружит: const   cs='бвгджз'; var   s,p:string;   i,n:integer;   c:char; begin   Writeln('Введите текст, разделяя слова запятыми, в конце поставьте точку');   Readln(s);   p:=''; n:=Length(cs);   s:=LowerCase(s); { приведение к нижнему регистру }   i:=1; c:=s[1];   while c<>'.' do begin     { обработка нечетного слова }     while (c<>',') and (c<>'.') do begin       if (Pos(c,cs)>0) and (Pos(c,p)=0) then p:=p+c;       i:=i+1;       c:=s[i]     end;     { обработка четного слова }     if c<>'.' then begin i:=i+1; c:=s[i] end;     while (c<>',') and (c<>'.') do begin       if (Pos(c,cs)>0) and (Pos(c,p)=1) then p[Pos(c,p)]:='*';       i:=i+1;       c:=s[i]     end;     if c<>'.' then begin i:=i+1; c:=s[i] end   end;   for i:=1 to Length(cs) do if Pos(cs[i],p)>0 then Write(cs[i]) end. Тестовое решение: Введите текст, разделяя слова запятыми, в конце поставьте точку Данная,фраза,предлагается,для,тестирования. вг
Не нашли ответ?
Ответить на вопрос
Похожие вопросы