Пример программы использования массива записей

 

Задача:

Создать массив записей, содержащий сведения о сотрудниках фирмы. Каждая запись содержит поля – фамилия сотрудника, наименование отдела, оклад, трудовой стаж. Написать программу, выдающую следующую информацию:

  • список сотрудников отдела Х с указанием оклада и трудового стажа;
  • подсчитать среднюю заработную плату сотрудников отдела Х.

Название отдела Х вводится по запросу с клавиатуры.

 

  1. Таблица идентификаторов
Наименование переменной Обозначения в программе Тип переменной
Имя массива f record (запись)
Количество сотрудников n integer
Поле фамилия surname string
Поле отдел otdel string
Поле оклад oklad real
Поле стаж Stag integer
Средняя зарплата Sred real
Отдел поиска Х X string
Количество сотрудников в отделе Х K integer
Индексы массива i integer

 

  1. Листинг программы

program rec_1;

uses crt;

type

firma = record; {запись}

surname : string[20];

otdel : string[20];

oklad : real;

Stag : integer;

end;

var

f:array[ 1..30 ] of firma; {массив записей}

X:string[20];

i,n,k:integer;

sred:real;

begin

clrscr;

writeln(‘Введите n’); readln(n);

writeln(‘Введите информацию о сотрудниках’);

for i:=1 to n do

with f[i] do

begin

writeln(‘Введите фамилию ’); readln(surname);

writeln(‘Введите отдел ’); readln(otdel);

writeln(‘Введите оклад ’); readln(oklad);

writeln(‘Введите стаж ’); readln(Stag);

end;

writeln(‘Введите название отдела’); readln(X);

sred:=0; k:=0;

writeln(‘Список сотрудников отдела ’,X);

for i:=1 to n do

if f[i].otdel=X then

begin

writeln(f[i].surname,’ ‘,f[i].oklad:8:3);

sred:=sred+f[i].oklad;

k:=k+1;

end;

writeln(‘Средняя зарплата отдела=’,(sred/k):8:3);

readln;

end.

Вопросы для самоконтроля

 

  1. В чем состоит основное преимущество записи?
  2. Почему записи называют комбинированным типом записи?
  3. Чем записи отличаются от массивов?
  4. Что называется полем записи?
  5. Какие требования предъявляются к идентификаторам поля записи?
  6. Как определить объем памяти, требуемый для размещения записи?
  7. С какой целью при обращении к полю записи используется оператор with … do?