Pascal. Дана строка из строчных русских букв. Между соседними словами - запятая, за...

0 голосов
59 просмотров

Pascal.

Дана строка из строчных русских букв. Между соседними словами - запятая, за последним словом - точка. Составить программу, печатающую в алфавитном порядке:
1. Все гласные буквы, которые входят в каждое слово.
2. Все согласные буквы, которые не входят ни в одно слово.


Информатика (128 баллов) | 59 просмотров
Дан 1 ответ
0 голосов
Правильный ответ

// PascalABC.NET 3.1, сборка 1250 от 28.05.2016
function Гласные_в_слове(w:string):sequence of char;
begin
  Result:=w.ToCharArray.Where(c->Pos(c,'аеёиоуыэюя')>0).Distinct
end;

begin
  var s:=ReadlnString('>');
  var w:=s.ToWords(',','.');
  var P:=Гласные_в_слове(w[0]);
  for var i:=1 to Length(w,0)-1 do begin
    var Q:=Гласные_в_слове(w[i]);
    P:=P.InterSect(Q)
    end;
  P:=P.Sorted;
  if P.Count>0 then begin
    Write('Гласные, которые есть в каждом слове: ');
    P.Println(',')
    end
  else
    Writeln('Нет ни одной одинаковой гласной во всех словах');
  var R:='бвгджзйклмнпрстфхцчшщъь'.ToCharArray.ToList;
  foreach var c in s do
    if c in R then R.Remove(c);
  if R.Count>0 then begin
    Write('Согласные, которых нет ни в одном слове: ');
    R.Println(',')
    end
  else
    Writeln('Все согласные присутствуют в тексте')
end.

Тестовое решение
> фонарик,барахолка,биосфера,волокуша,макароны.
Гласные, которые есть в каждом слове: а,о
Согласные, которых нет ни в одном слове: г,д,ж,з,й,п,т,ц,ч,щ,ъ,ь

(142k баллов)
0

Да уж, воистину в 5 баллов такое задание может оценить только то, кто чужой труд не уважает...(((