При решении задач обработки большого количества данных используют массивы. Но при работе с массивами основное ограничение заключается в том, что все элементы массива должны быть одного типа. Для работы с комбинированными типами данных применяют записи.
Записи – это структурированный тип данных, позволяющих хранить вместе различные типы данных.
Запись состоит из нескольких полей, для каждого из которых при объявлении (описании) указывается имя и тип.
Например:
type
student = record; {запись}
surname: string[20];
year: integer;
bal: real;
end; {завершает список полей}
var
st:student;
Сформирован пользовательский тип данных – student, он базируется на стандартных типах (string, integer,real).
Переменная st - имеет тип student (запись), состоит из 3-х полей:
surname – фамилия студента;
year – год рождения;
bal – средний бал.
Каждое поле хранит информацию разного типа. При обращении к отдельным полям указывается имя всей записи и имя отдельного поля через точку.
st.surname:='Иванов';
st.year:=1905;
st.bal:=4.5;
Для уменьшения записи обращения к отдельным полям используют оператор with … do
Например:
with st do
begin
surname:='Иванов';
year:= 1905;
bal:=4.5;
end;
Для обработки большого объема информации комбинированного типа целесообразно строить массивы записей, где каждый элемент массива – запись, состоящая из нескольких полей разного типа.
Например, чтобы сохранить информацию о студентах группы в 25 человек, можно создать следующий массив записей:
type
student = record; {запись}
surname: string[20];
year: integer;
bal: real;
end;
var
st:array[ 1..25 ] of student;
st – массив записей. Каждый элемент массива(St[i])содержит информацию об одном студенте:
St[i].surname – фамилия;
St[i].year – год рождения;
St[i].bal – средний бал.
Задача.
Создать массив записей, содержащий информацию о студентах группы. Каждая запись содержит поля – фамилия, год рождения, пол. Подсчитать средний возраст студентов мужского пола группы.
Таблица идентификаторов
№
Наименование переменной
Обозначения в программе
Имя массива
st
Количество студентов
n
Индекс массива
i
Средний возраст
p
Количество мужчин
k
Текущий год
t
program rec;
uses crt;
type
student = record; {запись}
surname: string[20];
year: integer;
pol: char;
end;
var
st:array[ 1..30 ] of student;
i,n,t:integer; p:real;
begin
clrscr;
writeln(‘Введите текущий год’);
readln(t)
writeln(‘Введите количество студентов’);
readln(n)
for i:=1 to n do
with st[i] do
begin
writeln(‘Сведения о ’,i,‘ студенте’);
writeln(‘Введите фамилию’); readln(surname);
writeln(‘Введите год рождения’); readln(year);
writeln(‘Введите средний бал’); readln(bal);
end;
p:=0;
for i:=1 to n do
begin
if st[i].pol=’m’ then
begin
p:=p+(t-st[i].year);
k:=k+1;
end;
writeln(‘Средний возраст мужчин =’,(p/k):8:3);
readln;
end.
Задача:
Создать массив записей, содержащий сведения о сотрудниках фирмы. Каждая запись содержит поля – фамилия сотрудника, наименование отдела, оклад, трудовой стаж. Написать программу, выдающую следующую информацию:
список сотрудников отдела Х с указанием оклада и трудового стажа;
подсчитать среднюю заработную плату сотрудников отдела Х.
Название отдела Х вводится по запросу с клавиатуры.
Таблица идентификаторов
№
Наименование переменной
Обозначения в программе
Тип переменной
Имя массива
f
record
(запись)
Количество сотрудников
n
integer
Поле фамилия
surname
string
Поле отдел
otdel
string
Поле оклад
oklad
real
Поле стаж
Stag
integer
Средняя зарплата
Sred
real
Отдел поиска Х
X
string
Количество сотрудников в отделе Х
K
integer
Индексы массива
i
integer
Листинг программы
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.
Вопросы для самоконтроля
В чем состоит основное преимущество записи?
Почему записи называют комбинированным типом записи?
Чем записи отличаются от массивов?
Что называется полем записи?
Какие требования предъявляются к идентификаторам поля записи?
Как определить объем памяти, требуемый для размещения записи?
С какой целью при обращении к полю записи используется оператор with … do?
Методические указания к выполнению индивидуального задания по Модулю 2. «Массивы записей»
Цель работы: Ознакомиться с пользовательскими типами данных, записями. Научиться организовывать массивы записей.
Задание:
1. В приложении 11 выбрать вариант задания.
2. Выполнить индивидуальное задание по Модулю 2, на примере программы использования массива записей.
3. Составить блок-схему алгоритма.
4. Утвердить блок-схему у тьютора.
5. Написать программу и отладить ее по заранее подготовленному тесту.
6. Результат выполнения программы предъявить преподавателю.
7. Оформить ИДЗ в формате А4, титульный лист по образцу Приложение 4
8. Защитить выполненную работу у преподавателя.
Приложение 11. Таблица вариантов индивидуального задания
Вариант
Задание
Создать массив записей, содержащий сведения о месячной заработной плате рабочих завода.
Каждая запись содержит поля – фамилия рабочего, наименование цеха, размер заработной платы за месяц. Необходимо:
- отсортировать массив записей по полю заработная плата;
- подсчитать общую сумму выплат за месяц по цеху Х. Наименование цеха Х вводится по запросу с клавиатуры.
Создать массив записей, содержащий сведения об участниках конференции. Каждая запись содержит поля – фамилия участника, возраст, город, из которого прибыл участник.
Написать программу, выдающую следующую информацию:
- список участников, приехавших из города Х с указанием возраста;
- средний возраст участников конференции.
Название города Х вводится по запросу с клавиатуры.
Создать массив записей, содержащий информацию о сотрудниках частной клиники. Каждая запись содержит поля – фамилия врача, специализация, стаж работы.
Написать программу, выдающую следующую информацию:
- список врачей по специализации Х с указанием стажа работы;
- средний стаж сотрудников клиники.
Специализация Х вводится по запросу с клавиатуры.
Создать массив записей, содержащий сведения об абонентах телефонной компании. Каждая запись содержит поля – фамилия абонента, год установки телефона, номер телефона. Написать программу, выдающую следующую информацию:
- список абонентов, отсортированный по полю год установки;
- по вводимой фамилии Х выдается номер телефона абонента.
Фамилия Х вводится по запросу с клавиатуры.
Создать массив записей, содержащий сведения об ассортименте игрушек в магазине. Каждая запись содержит поля – название игрушки, цена, количество. Написать программу, выдающую следующую информацию:
- стоимость самой дорогой игрушки и ее наименование;
- общую стоимость всех игрушек в магазине.
Создать массив записей, содержащий сведения об экспортируемых товарах. Каждая запись содержит поля – наименование товара, страна, импортирующая товар, объем поставляемой партии в штуках. Написать программу, выдающую следующую информацию:
- список стран, в которые экспортируется товар Х и объем его экспорта;
- средний объем экспорта товара Х.
Наименование товара Х вводится по запросу с клавиатуры.
Создать массив записей, содержащий сведения о студентах группы. Каждая запись содержит поля – фамилия студента, год рождения и оценки по трем экзаменам. Написать программу, выдающую следующую информацию:
- список студентов, отсортированный по полю год рождения с указанием полученных оценок;
- количество студентов, получивших неудовлетворительные оценки хотя бы по одной дисциплине.
Создать массив записей, содержащий сведения о городской библиотеке. Каждая запись содержит поля – шифр книги, автор, название, год издания и стоимость. Написать программу, выдающую следующую информацию:
- список книг автора Х с указанием названия и года издания книги;
- стоимость самой дорогой книги автора Х;
Фамилия автора Х вводится по запросу с клавиатуры.
Создать массив записей, содержащий сведения о наличии билетов и рейсах Аэрофлота. Каждая запись содержит поля – номер рейса, пункт назначения, время вылета, стоимость билетов. Написать программу, выдающую следующую информацию:
- список рейсов самолетов в город Х, с указанием времени вылета и стоимости билетов;
- номер рейса в город Х, с минимальной стоимостью билета.
Наименование города Х вводится по запросу с клавиатуры.
Создать массив записей, содержащий сведения об ассортименте товаров в магазине. Каждая запись содержит поля – артикул, наименование, стоимость единицы товара, количество. Написать программу, выдающую следующую информацию:
- список товаров, отсортированный по полю стоимость товара;
- общую стоимость всех товаров в магазине.
Создать массив записей, содержащий сведения о сессии. Каждая запись содержит поля – индекс группы (например ЭС-101), фамилия студента, оценки по трем экзаменам. Написать программу, выдающую следующую информацию:
- фамилии неуспевающих студентов группы Х, с указанием количества задолженностей;
- количество неуспевающих студентов группы Х.
Наименование группы Х вводится по запросу с клавиатуры.
Создать массив записей, содержащий сведения об отправлении поездов дальнего следования. Каждая запись содержит поля – номер поезда, станция назначения, время отправления, стоимость билетов. Написать программу, выдающую следующую информацию:
- время отправления поездов в город Х с указанием стоимости билетов;
- номер поезда в город Х с минимальной стоимостью билета.
Наименование города Х вводится по запросу с клавиатуры.
Создать массив записей, содержащий сведения о сотрудниках института. Каждая запись содержит поля – фамилия, пол, название отдела, год рождения, стаж. Написать программу, выдающую следующую информацию:
- список сотрудников мужского пола отдела Х призывного возраста (старше 18 и младше 30 лет), с указанием стажа работы;
- средний возраст сотрудников мужского пола отдела Х.
Наименование отдела Х вводится по запросу с клавиатуры.
Создать массив записей, содержащий сведения о телефонах абонентов. Каждая запись содержит поля – фамилия абонента, адрес, номер телефона. Написать программу, выдающую следующую информацию:
- по вводимой фамилии абонента Х и адресу Y выдается номер телефона.
Фамилию абонента Х и адрес Y вводится по запросу с клавиатуры.
Создать массив записей, содержащий сведения о товарах некоторого склада. Каждая запись содержит поля – наименование, цена единицы товара, количество. Написать программу, выдающую следующую информацию:
- список товаров, стоимость которых не превышает Х рублей с указанием количества;
- общее количество товаров, стоимость которых не превышает Х.
Стоимость Х вводится по запросу с клавиатуры.
Создать массив записей, содержащий сведения о товарах автосалона. Каждая запись содержит поля – модель автомобиля, цвет, номер двигателя, стоимость. Написать программу, выдающую следующую информацию:
- список автомобилей модели Х с указанием цены, цвета и номера двигателя;
- самый дорогой автомобиль модели Х.
Модель автомобиля Х вводится по запросу с клавиатуры.
Создать массив записей, содержащий сведения о туристической фирме. Каждая запись содержит поля – наименование страны, наименование города, стоимость тура. Написать программу, выдающую следующую информацию:
- список туров в страну Х с указанием наименования города и стоимости тура;
- самый дорогой тур в страну Х.
Название страны Х вводится по запросу с клавиатуры.
Создать массив записей, содержащий сведения о студентах группы. Каждая запись содержит поля – фамилия студента, индекс группы (например, ЭС-101) и оценки по трём экзаменам. Написать программу, выдающую следующую информацию:
- список отличников группы Х;
- процент отличников по отношения к общему количеству студентов группы Х.
Индекс группы Х вводится по запросу с клавиатуры.
Создать массив записей, содержащий сведения об абонентах телефонной компании. Каждая запись содержит поля – фамилия абонента, год установки телефона, номер телефона. Написать программу, выдающую следующую информацию:
- список абонентов, отсортированный по полю год установки;
- количество установленных телефонов с Х года.
Значение Х вводится по запросу с клавиатуры.
Создать массив записей, содержащий информацию о количестве изделий, собранных рабочими за месяц. Каждая запись содержит поля – фамилия сборщика, наименование цеха, количество изделий, собранных рабочим за месяц. Считая заданными значение расценок по сборке единицы изделия Х, выдать следующую информацию:
- ведомость заработной платы рабочих цеха;
- общую сумму выплат по цеху.
Стоимость сборки единицы изделия Х вводится по запросу с клавиатуры.
Создать массив записей, содержащий сведения о сотрудниках таксомоторного парка. Каждая запись содержит поля – фамилия водителя, номер автомобиля, количество выездов за месяц.
Написать программу, выдающую следующую информацию:
- подсчитать общее количество выездов за месяц;
- фамилию водителя, с наибольшим количеством выездов.
Создать массив записей, содержащий сведения об услугах частной клиники. Каждая запись содержит поля – название операции, стоимость операции, возрастные ограничения на каждую операцию.
Написать программу, выдающую следующую информацию:
- список услуг клиники, отсортированный по полю название операции;
- по введенному названию операции Х распечатать стоимость и возрастные ограничения.
Название операции Х вводится по запросу с клавиатуры.
Создать массив записей, содержащий сведения о сотрудниках института. Каждая запись содержит поля – фамилия сотрудника, оклад, стаж работы. Написать программу, которая должна:
- начислить премию сотрудникам в размере оклада, стаж которых превышает Х лет:
- распечатать список сотрудников, получивших премию с указанием размера премии.
Величина Х вводится по запросу с клавиатуры.
Создать массив записей, содержащий сведения о товарах магазина. Каждая запись содержит поля – наименование товара, стоимость, количество.
Написать программу, которая;
- уменьшит стоимость товаров, количество которых не превышает Х, на 50%;
- распечатать список новых цен.
Количество Х вводится по запросу с клавиатуры.
Создать массив записей, содержащий информацию о количестве изделий, собранных рабочими цеха. Каждая запись содержит поля – фамилия рабочего, наименование цеха, количество собранных им изделий за месяц. Написать программу, выдающую следующую информацию:
- список рабочих цеха, отсортированный по полю фамилия;
- общее количество изделий, собранных рабочими цеха за месяц.
Создать массив записей, содержащий сведения о сотрудниках таксомоторного парка. Каждая запись содержит поля – фамилия водителя, номер автомобиля, количество выездов за месяц, оплата за каждый выезд.
Написать программу, выдающую следующую информацию:
- подсчитать общее количество выездов за месяц;
- фамилию водителя, с наибольшей суммой оплат за выезды.
Создать массив записей, содержащий сведения о туристической фирме. Каждая запись содержит поля – наименование страны, цель поездки (например: экскурсионная, отдых), стоимость тура. Написать программу, выдающую следующую информацию:
- список туров с целью поездки Х с указанием наименования города и стоимости тура;
- самый дешёвый тур с целью поездки Х.
Цель поездки Х вводится по запросу с клавиатуры.
Создать массив записей, содержащий сведения о товарах автосалона. Каждая запись содержит поля – модель автомобиля, цвет, номер двигателя, стоимость. Написать программу, выдающую следующую информацию:
- список автомобилей модели Х с указанием цены, цвета и номера двигателя;
- самый дешевый автомобиль модели Х.
Модель автомобиля Х вводится по запросу с клавиатуры.
Создать массив записей, содержащий сведения о сотрудниках института. Каждая запись содержит поля – фамилия, пол, название отдела, год рождения, стаж. Написать программу, выдающую следующую информацию:
-список сотрудников женского пола в возрасте от 18 и до 55 лет, с указанием стажа работы;
-средний возраст сотрудников женского пола отдела Х.
Наименование отдела Х вводится по запросу с клавиатуры.
Создать массив записей, содержащий сведения о товарах некоторого склада. Каждая запись содержит поля – наименование, цена единицы товара, количество. Написать программу, выдающую следующую информацию:
-список товаров, стоимость которых превышает Х рублей с указанием количества;
-общую стоимость товаров на складе.
Стоимость Х вводится по запросу с клавиатуры.
Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет
studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав!Последнее добавление