ОАиП 2часть к.р. 28 вариант
.docБелорусский государственный университет
информатики и радиоэлектроники
Факультет заочного, вечернего и дистанционного обучения
Специальность - ПОИТ
Янков Максим Игоревич
Зачетная книжка 701023с-28
Электронный адрес Yankoff@open.by
Контрольная работая №1 – ОАИП 2-я часть
Задание №28
Напечатать все глухие согласные буквы, которые входят в каждое нечетное слово и не входят хотя бы в одно четное слово
program FndSoglas;
{ Поиск согласных }
const
KolChar = 255;
KolGluxSogl = 9; {Количество глухих согласных}
GluxSogl: string[KolGluxSogl] = 'кпстфхцшщ';
var
KolWrd: Integer; {Количество слов}
InpStr: string[KolChar]; {Входная строка }
WrdBeg: array[1..KolChar] of Integer; {Начала слов в строке}
Ch: Char;
YesInNeChet, YesInChet: Boolean;
i, j, k: integer;
{ Функция поиска символа Ch в словах входной строки}
function FindChar(var Ind : integer; Ch : char) : Boolean;
var i : integer;
begin
FindChar := false;
i := Ind;
while (InpStr[i] <> '.') and (InpStr[i] <> ',') do
begin
if (InpStr[i] = Ch) then
begin
FindChar := true;
break;
end;
i := i + 1;
end;
end;
begin { Тело программы }
write('Введите строку : ');
readln(InpStr);
KolWrd := 1; { Кол-во найденных слов }
WrdBeg[KolWrd] := 1;
i := 1;
{ Поиск слов }
while (InpStr[i] <> '.') do
begin
if InpStr[i] = ',' then
begin
KolWrd := KolWrd +1;
WrdBeg[KolWrd] := i + 1;
end;
i := i + 1;
end;
if i = 1 { Если начало с .}
then
KolWrd := 0;
if KolWrd > 1 then
for j := 1 to KolGluxSogl do
begin
{ Выделение глухих согласных в нечетных словах}
i := 1; { Поиск с 1-го нечетного слова}
YesInNeChet := false; { Нет такой глухой хотя бы в одном слове}
YesInChet := false; { Нет такой глухой хотя бы в одном слове}
while i <= KolWrd do
begin
if FindChar(WrdBeg[i], GluxSogl[j] ) { Нашли глухую ?}
then
YesInNeChet := true
else
begin
YesInNeChet := false;
break;
end;
i := i + 2; { Следующее нечетное слово}
end;
if YesInNeChet = true then
{ Просмотр четных слов: }
begin
i := 2; { Поиск с 1-го четного слова}
YesInChet := false; { Нет такой глухой хотя бы в одном слове}
while i <= KolWrd do
begin
if FindChar(WrdBeg[i], GluxSogl[j] ) { Нашли глухую ?}
then
begin
YesInChet := true;
end
else
begin
YesInChet := false;
break;
end;
i := i + 2; { Следующее четное слово}
end;
end;
if (YesInNeChet = true) and (YesInChet = false)
then writeln(GluxSogl[j],' ');
end;
readln;
end.
Тестовые наборы для отладки программы:
Результат выполнения программы:
Turbo Pascal Version 7.0 Copyright (c) 1983,92 Borland International
Введите строку : каа, ффф , коо.
к
Введите строку : поо, ааа, пии, ууу.
п
Borland Pascal Version 7.0 Copyright (c) 1983,92 Borland International
Введите строку : ффф, ккк, фык, ннн.
ф