Ответы на экзаменационные вопросы № 1-34 по дисциплине "Программирование" (Средства модульного программирования в системе Турбо-Паскаль. ООП. Объекты в динамической памяти), страница 7

Пример 2. Пусть требуется определить количество гласных букв в предложении, введенном с клавиатуры.

Program Glasnye;

Const=['а', 'е', 'и', 'о', 'у', 'ы', 'э', 'ю', 'я', 'А', 'Е', 'И', 'О', 'У', 'Ы', 'Э', 'Ю', 'Я'];

Var s: string; p,i: integer;

begin

write('Введите строку текста:   ');  readln(s);

p:=0;

for i:=1 to length(s) do

if s[i] in glasn then p:=p+1;

writeln('В строке  ', p, '  гласных букв');  readln;

end.

Пример 3. В столовой имеются отдельные меню на завтрак, обед и ужин. Известно, что в каждом из этих меню не более 10 видов блюд. Требуется определить, какие виды блюд имеются в меню и на завтрак, и на обед, и на ужин, если такие есть. Определить виды блюд, которые имеются только на завтрак, только на обед, только на ужин (виды блюд следует рассматривать как данные перечислимого типа).

program bluda;

uses CRT;

const n=10;

type

blyuda=(chay, kofe, sok, omlet, kasha, yogurt,

sup, kotleta, makarony, buterbrod, myaso);

priem=(zavtrak, obed, uzhin);

menu_priem=set of blyuda;

menu_day=array[priem] of menu_priem;

var       menu: menu_day; i: priem; j: blyuda; res_menu: menu_priem;

function name_blyudo(index:blyuda):string;

var s: string;

begin

case index of

chay: s:='чай';

kofe: s:='кофе';

sok: s:='сок';

omlet: s:='омлет';

kasha: s:='каша';

yogurt: s:='йогурт';

sup:  s:='суп';

kotleta: s:='котлета';

makarony: s:='макароны';

buterbrod: s:='бутерброд';

myaso:    s:='мясо';

end;

name_blyudo:=s;

end;

procedure form_menu(var m:menu_priem; kol, smesh: byte);

var j: blyuda; k,nom: byte;

begin

for j:=chay to myaso do

begin

gotoxy(1,ord(j)+3);

writeln(ord(j)+1, '. ', name_blyudo(j));

end;

gotoxy(5, 15);

gotoxy(5, 15);

write('выберите блюдо; для завершения введите 0   ');

m:=[]; k:=0;

repeat

gotoxy(55,15); write('    ');

gotoxy(55,15); readln(nom);

case nom of

1: j:=chay;

2: j:=kofe;

3: j:=sok;

4: j:=omlet;

5: j:=kasha;

6: j:=yogurt;

7: j:=sup;

8: j:=kotleta;

9: j:=makarony;

10: j:=buterbrod;

11: j:=myaso;

end;

if (nom<>0) and not(j in m) then

begin

m:=m+[j];

k:=k+1;

gotoxy((k-1)*8+1,17+smesh);

write(name_blyudo(j),'  ')

end;

until (nom=0) or (k>=kol);

end;

begin

clrscr;

for i:=zavtrak to uzhin do

begin

gotoxy(1, 16+2*ord(i));

write('выбранные блюда ', ord(i)+1,': ');

form_menu(menu[i],n,2*ord(i));

end;

gotoxy(1,23);

{menu[zavtrak]:=[chay, kofe, omlet, kasha, yogurt, buterbrod];

menu[obed]:=[chay, kofe, sok, omlet, sup, kotleta, makarony, myaso];

menu[uzhin]:=[chay, omlet, kasha, yogurt, kotleta, makarony];}

Res_menu:= menu[zavtrak]* menu[obed]* menu[uzhin];

for j:=chay to myaso do

begin

if j in res_menu then

writeln('блюдо  ',name_blyudo(j),' везде');

end;

readln;

end.

3.Тип данных – запись: место в классификации, объявление типа, структура записи, доступ к полям записи. Оператор присоединения. Запись как компонента массива.

Определение записи. Вариантная часть.  

Запись – это сложный, структурированный тип, который представляет собой совокупность данных различного типа, имеющих прямое и характеризующее отношение к какому-либо объекту. Запись есть единица информации о предмете с точки зрения его существенных свойств.  

Количество элементов записи строго фиксировано. Каждый элемент записи называется полем. Чаще всего при задании типа запись поля принадлежат разным типам (в противном случае использование записи теряет смысл, т.к. можно вполне обойтись массивом). Названия полей в одной записи должны быть различны, но имена полей внутри различных записей могут совпадать.  

В языке Паскаль для обозначения типа записей служит идентификатор record.  

<идентификатор типа> = record  <поле 1> : <тип значений поля 1>;  . . .  <поле k> : <тип значений поля k>;  [вариантная часть]  end;

Пример.  

1. Составить описание книг по следующим характеристикам: код классификации, автор, название, аннотация, год издания, стоимость, количество страниц.  

 type book = record  kod : string[15];  avtor, nazvanie, annot : string;  god : word;  stoim : real;  stranic ; integer;  end;