Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ОАиП 2часть к.р. 28 вариант

.doc
Скачиваний:
6
Добавлен:
01.04.2014
Размер:
44.54 Кб
Скачать

Белорусский государственный университет

информатики и радиоэлектроники

Факультет заочного, вечернего и дистанционного обучения

Специальность - ПОИТ

Янков Максим Игоревич

Зачетная книжка 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

Введите строку : ффф, ккк, фык, ннн.

ф