Язык программирования Pascal. Строки и записи. Васильев В.В - 6 стр.

UptoLike

6
Как только обнаруживается сочетание букв онок или енок, происходит
выделение слова. Для этого в переменной osnova накапливаются буквы , пред-
шествующие сочетанию нок, до тех пор , пока не будет считан разделитель
слов (точка , пробел или запятая) или не закончится текст. Затем к значению
переменной osnova добавляется буквосочетание нок.
Если выделенное слово является исключением, то множественное число
определяется непосредственно. В противном случае , если в переменной osnova
предпоследняя буква оказывается шипящей , то к значению переменной osnova
(без последней буквы) добавляется буквосочетание ата, иначе ята.
Образованное множественное число сохраняется в переменной mnogo. Пе-
ременная p используется для хранения позиции буквы при формировании осно-
вы слова. Логическая переменная f хранит ответ на вопрос: Является ли слово
исключением?
Program Multi;
Uses crt;
Var s:string; slovo, osnova, mnogo:string[20];
p,i:byte; f:boolean;
Begin
Textbackground(7); Textcolor(blue); Clrscr;
writeln('Введите текст:'); readln(s);
i:=5;
while i<=length(s)+1 do
begin
{выделение основы слов, оканчивающихся на онок и -енок}
if (copy(s,i-4,4)='онок') or (copy(s,i-4,4)='енок')
then
begin
osnova:=''; p:=i-4;
repeat
osnova:=s[p]+osnova; p:=p-1
until (p=0) or (s[p] in [' ',',','.']);
slovo:=osnova+'нок';
f:=false;
{проверка совпадения слова с исключением}
if slovo='ребенок' then begin mnogo:='дети'; f:=true end;
if slovo='бесенок' then begin mnogo:='бесенята '; f:=true end;
if slovo='опенок' then begin mnogo:='опята';f:=true end;
if slovo='звонок' then begin mnogo:='звонки';f:=true end;
if slovo='позвонок' then begin mnogo:='позвонки';f:=true end;
if slovo='подонок' then begin mnogo:='подонки';f:=true end;
if slovo='жаворонок' then begin mnogo:='жаворонки';f:=true end;
if slovo='бочонок' then begin mnogo:='бочонки'; f:=true end;
{образование множественного числа и вывод на экран}
if not(f)
                                                             6
     Кактоль ко обнаруживаетсясочетание букв–он ок или –ен ок, происходит
выделение слова. Д ляэ того впеременной osnova накапливаю тсябуквы, пред-
ш ествую щ ие сочетанию –н ок, до тех пор, покане будетсчитан разделитель
слов(т очка , пр об ел и л и за пят а я) или не закончитсятекст. Затемкзначению
переменной osnova добавляетсябуквосочетание –н ок.
     Е сли выделенное слово являетсяисклю чением, то множественное число
определяетсянепосредственно. В противномслучае, если впеременной osnova
предпоследняябукваоказываетсяш ипящ ей , то кзначению переменной osnova
(б езпос л едн ей б укв ы) добавляетсябуквосочетание –а т а , иначе –ят а .
     О бразованное множественное число сохраняетсявпеременной mnogo. П е-
ременнаяp исполь зуетсядляхраненияпозиции буквы при ф ормировании осно-
вы слова. Л огическаяпеременнаяf хранит ответнавопрос: “Являетсяли слово
исклю чением?” ♠
Program Multi;
Uses crt;
Var s:string; slovo, osnova, mnogo:string[20];
      p,i:byte; f:boolean;
Begin
  Textbackground(7); Textcolor(blue); Clrscr;
  writeln('Введите текст:'); readln(s);
  i:=5;
  while i<=length(s)+1 do
    begin
     {в ы дел ен и ео с н о в ы с л о в , о к а н чи в а ю щ и хс я н а –о н о к и -ен о к }
     if (copy(s,i-4,4)='онок') or (copy(s,i-4,4)='енок')
         then
          begin
            osnova:=''; p:=i-4;
            repeat
               osnova:=s[p]+osnova; p:=p-1
            until (p=0) or (s[p] in [' ',',','.']);
            slovo:=osnova+'нок';
            f:=false;
     {проверка совпадения слова с исключением}
if slovo='ребенок' then begin mnogo:='дети'; f:=true end;
if slovo='бес ен о к ' then begin mnogo:='бес ен ята '; f:=true end;
if slovo='опенок' then begin mnogo:='опята';f:=true end;
if slovo='звонок' then begin mnogo:='звонки';f:=true end;
if slovo='п о з в о н о к ' then begin mnogo:='п о з в о н к и ';f:=true end;
if slovo='п о до н о к ' then begin mnogo:='п о до н к и ';f:=true end;
if slovo='жа в о ро н о к ' then begin mnogo:='жа в о ро н к и ';f:=true end;
if slovo='бо чо н о к ' then begin mnogo:='бо чо н к и '; f:=true end;
     {образование множественного числа и вывод на экран}
          if not(f)