3.6 Константы - записи
Определение константы - записи имеет следующий вид:
<идентификатор>: <тип записи>=(<список значений полей>);
Идентификатор - имя константы. Список значений полей представляет собой список из последовательностей вида: имя поля, двоеточие и константа. Элементы списка отделяются друг от друга точкой с запятой, например:
type
point = record
x, y: real
end;
vector = array [0..1] of point;
month = (Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Okt, Nov, Dec);
data = record
d: 1..31;
m: month;
y: 1900..1999
end;
const
point1: point = (x: 0; y: -1);
line: vector = ((x: -3.1; y:1.5), (x: 5.9; y: 3.0));
SomeDay: data = (d: 16; m: Mar; y: 1989);
Поля должны указываться в той последовательности, в какой они перечислены в объявлении типа. Если в записи используется хотя бы одно поле файлового типа (см. § 4), то такую запись нельзя объявить типизированной константой. Для записей с вариантными полями указывается только один из возможных вариантов констант. Например:
type
forma = record
case Boolean of
true : (BirthPlase:string [40]); {место рождения}
false: (Country : string [20]; {страна}
Gorod : string [20]; {город}
FIO : string[20];
BirthData : array [1..3] of word;{дата рождения}
vozrast : word)
end;
const {если значение селектора есть false}
Person1: forma = (Country : 'Россия';
Gorod : ‘Орел’;
FIO : ‘Иванов И.И.’;
BirthData : (16,3,78);
vozrast : 20);
{если значение селектора есть true}
Preson2: forma = (BirthPlase: 'г. Орел, пос. Кромы');
Задачи для самостоятельного решения.
1. Дана ведомость абитуриентов, сдавших вступительные экзамены в институт. В каждой строке данной ведомости записана фамилия абитуриента, его постоянное место жительства и полученные им оценки по отдельным дисциплинам (например, физике, математике, литературе). Необходимо определить количество абитуриентов, проживающих в городе Мценске (Орл. область) и сдавших экзамены со средним баллом не ниже 4, распечатать их фамилии в алфавитном порядке.
2. В справочной аэропорта хранится расписание вылета самолетов на следующие сутки. Для каждого рейса указаны его номер, тип самолета, пункт назначения, время вылета. Определить все номера рейсов, типы самолетов и время их вылета для заданного пункта назначения.
3. Дана ведомость абитуриентов, сдавших вступительные экзамены в институт. В каждой строке данной ведомости записана фамилия абитуриента, его постоянное место жительства и полученные им оценки по отдельным дисциплинам (например, физике, математике, литературе). Необходимо определить средний балл по институту и распечатать список абитуриентов, средний балл которых выше среднего балла по институту. Первыми в списке должны идти студенты, сдавшие все экзамены на 5.
4. У администратора железнодорожных касс хранится информация о свободных местах в поездах по всем направлениям на ближайшую неделю. Информация представлена в следующем виде: дата выезда, конечный пункт назначения, время отправления, число свободных купейных мест, число свободных плацкартных мест. Оргкомитет международной конференции обращается к администратору с просьбой зарезервировать 50 купейных мест до Берлина на субботу. При этом время отправления поезда должно быть не позднее 10 часов вечера. Выдать на печать время отправления или сообщение о невозможности выполнить заказ в полном объеме.
5. В радиоателье хранятся квитанции о сданной в ремонт радиоаппаратуре. Каждая квитанция содержит следующую информацию: наименование группы изделий (телевизор, радиоприемник, магнитофон и т.п.), марку изделия, дату приемки в ремонт, состояние готовности заказа (выполнен, не выполнен). Начальнику ателье необходимо выдать информацию о состоянии заказов по группам изделий на текущие сутки.
6. Написать программу форматирования ведомости об успеваемости студентов. Каждая запись в этой ведомости должна содержать номер группы, фамилию студента, средний балл за последнюю сессию. Необходимо распечатать списки студентов по группам. В каждой группе фамилии студентов разместить в порядке убывания среднего балла.
7. На складе комплектующих деталей хранится N деталей, каждая из которых характеризуется записью следующего вида:
Type
ZAP= Record
DTL: string [10];
PR1: integer;
PR2, PR3: boolean;
End;
Здесь DTL – наименование детали; PR1, PR2, PR3 – некоторые признаки детали. Необходимо подготовить детали к запуску в сборочный цех. Для этого их следует разбить на пары (Z1, Z2), где Z1, Z2 – переменные типа ZAP, таким образом, чтобы разность Z1.PR1–Z2.PR1 была как можно меньше для каждой пары (Z1, Z2). Вывести на печать все наименования пар запуска.
8. В библиотеке имеется список книг. Каждая запись этого списка содержит фамилии авторов, название книги, год издания. Определить, имеются ли в данном списке книги, в названии которых встречается некоторое ключевое слово (например, MS–DOS). Если имеются, то выдать на печать фамилии авторов, название и год издания всех таких книг. Ключевое слово ввести с клавиатуры.
