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

Ответы 3

  • Большое спасибо)
  • Пожалуйста
    • Автор:

      katzcarey
    • 5 лет назад
    • 0
  • Вариант для тех, кто любит и понимает множества.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.Тестовое решение:Введите текст, разделяя слова запятыми, в конце поставьте точкуДанная,фраза,предлагается,для,тестирования.вг
  • Добавить свой ответ

Еще вопросы

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years