Решение задач на Pascal. Задача на множества

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

Код программы

program prog;
{Вариант №19.
Дана непустая последовательность слов из строчных русских букв, между соседними
словами запятая или пробел, за последним словом - точка. Напечатать в алфавитном
порядке все звонкие согласные буквы, которые входят в каждое нечетное слово и не
входят хотя бы в одно четное}
var
res: set of char;
str: string;
const
zv = ['б', 'в', 'г', 'д', 'ж', 'з', 'л', 'м', 'н', 'р', 'й'];
zn = [',', ' ', '.'];
procedure GetResult(var str: string; var res: set of char);
var
i, k: integer;
a1, a2, a4, m: set of char;
begin
k := 1;
for i := 1 to str.Length do
if (str[i] in zn) then
begin
if (k mod 2 = 0) then
begin
if(k = 2) then
begin
a2 := m;
a4 := m;
end
else
begin
a2 := a2 + m;
a4 := a4 * m;
end;
end
else
begin
if(k = 1) then a1 := m
else a1 := a1 * m;
end;
inc(k);
m := [];
end
else
if(str[i] in zv) then
include(m, str[i]);
res := (a2 - a4) * a1;
end;
procedure OutputSet(var res: set of char);
var
ichar: char;
begin
if(res = []) then Writeln('Нет звонких согласных букв, которые входят в каждое нечетное слово и не входят хотя бы в одно четное')
else
for ichar := 'а' to 'я' do
if ichar in res then write(ichar, ' ');
end;
begin
Readln(str);
GetResult(str, res);
OutputSet(res);
end.
view raw Lab3.pas hosted with ❤ by GitHub
Схема алгоритма

Комментарии

Популярные сообщения