Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

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




Записи

Структурированные типы данных

При решении задач обработки большого количества данных используют массивы. Но при работе с массивами основное ограничение заключается в том, что все элементы массива должны быть одного типа. Для работы с комбинированными типами данных применяют записи.

Записи – это структурированный тип данных, позволяющих хранить вместе различные типы данных.

Запись состоит из нескольких полей, для каждого из которых при объявлении (описании) указывается имя и тип.

Например:

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.

Задача:

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

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

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

  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?

Методические указания к выполнению индивидуального задания по Модулю 2. «Массивы записей»

Цель работы: Ознакомиться с пользовательскими типами данных, записями. Научиться организовывать массивы записей.

Задание:

1. В приложении 11 выбрать вариант задания.

2. Выполнить индивидуальное задание по Модулю 2, на примере программы использования массива записей.

3. Составить блок-схему алгоритма.

4. Утвердить блок-схему у тьютора.

5. Написать программу и отладить ее по заранее подготовленному тесту.

6. Результат выполнения программы предъявить преподавателю.

7. Оформить ИДЗ в формате А4, титульный лист по образцу Приложение 4

8. Защитить выполненную работу у преподавателя.

Приложение 11. Таблица вариантов индивидуального задания

 

Вариант Задание
  Создать массив записей, содержащий сведения о месячной заработной плате рабочих завода. Каждая запись содержит поля – фамилия рабочего, наименование цеха, размер заработной платы за месяц. Необходимо: - отсортировать массив записей по полю заработная плата; - подсчитать общую сумму выплат за месяц по цеху Х. Наименование цеха Х вводится по запросу с клавиатуры.
  Создать массив записей, содержащий сведения об участниках конференции. Каждая запись содержит поля – фамилия участника, возраст, город, из которого прибыл участник. Написать программу, выдающую следующую информацию: - список участников, приехавших из города Х с указанием возраста; - средний возраст участников конференции. Название города Х вводится по запросу с клавиатуры.
  Создать массив записей, содержащий информацию о сотрудниках частной клиники. Каждая запись содержит поля – фамилия врача, специализация, стаж работы. Написать программу, выдающую следующую информацию: - список врачей по специализации Х с указанием стажа работы; - средний стаж сотрудников клиники. Специализация Х вводится по запросу с клавиатуры.
  Создать массив записей, содержащий сведения об абонентах телефонной компании. Каждая запись содержит поля – фамилия абонента, год установки телефона, номер телефона. Написать программу, выдающую следующую информацию: - список абонентов, отсортированный по полю год установки; - по вводимой фамилии Х выдается номер телефона абонента. Фамилия Х вводится по запросу с клавиатуры.
  Создать массив записей, содержащий сведения об ассортименте игрушек в магазине. Каждая запись содержит поля – название игрушки, цена, количество. Написать программу, выдающую следующую информацию: - стоимость самой дорогой игрушки и ее наименование; - общую стоимость всех игрушек в магазине.
  Создать массив записей, содержащий сведения об экспортируемых товарах. Каждая запись содержит поля – наименование товара, страна, импортирующая товар, объем поставляемой партии в штуках. Написать программу, выдающую следующую информацию: - список стран, в которые экспортируется товар Х и объем его экспорта; - средний объем экспорта товара Х. Наименование товара Х вводится по запросу с клавиатуры.
  Создать массив записей, содержащий сведения о студентах группы. Каждая запись содержит поля – фамилия студента, год рождения и оценки по трем экзаменам. Написать программу, выдающую следующую информацию: - список студентов, отсортированный по полю год рождения с указанием полученных оценок; - количество студентов, получивших неудовлетворительные оценки хотя бы по одной дисциплине.
  Создать массив записей, содержащий сведения о городской библиотеке. Каждая запись содержит поля – шифр книги, автор, название, год издания и стоимость. Написать программу, выдающую следующую информацию: - список книг автора Х с указанием названия и года издания книги; - стоимость самой дорогой книги автора Х; Фамилия автора Х вводится по запросу с клавиатуры.
  Создать массив записей, содержащий сведения о наличии билетов и рейсах Аэрофлота. Каждая запись содержит поля – номер рейса, пункт назначения, время вылета, стоимость билетов. Написать программу, выдающую следующую информацию: - список рейсов самолетов в город Х, с указанием времени вылета и стоимости билетов; - номер рейса в город Х, с минимальной стоимостью билета. Наименование города Х вводится по запросу с клавиатуры.
  Создать массив записей, содержащий сведения об ассортименте товаров в магазине. Каждая запись содержит поля – артикул, наименование, стоимость единицы товара, количество. Написать программу, выдающую следующую информацию: - список товаров, отсортированный по полю стоимость товара; - общую стоимость всех товаров в магазине.
  Создать массив записей, содержащий сведения о сессии. Каждая запись содержит поля – индекс группы (например ЭС-101), фамилия студента, оценки по трем экзаменам. Написать программу, выдающую следующую информацию: - фамилии неуспевающих студентов группы Х, с указанием количества задолженностей; - количество неуспевающих студентов группы Х. Наименование группы Х вводится по запросу с клавиатуры.
  Создать массив записей, содержащий сведения об отправлении поездов дальнего следования. Каждая запись содержит поля – номер поезда, станция назначения, время отправления, стоимость билетов. Написать программу, выдающую следующую информацию: - время отправления поездов в город Х с указанием стоимости билетов; - номер поезда в город Х с минимальной стоимостью билета. Наименование города Х вводится по запросу с клавиатуры.
  Создать массив записей, содержащий сведения о сотрудниках института. Каждая запись содержит поля – фамилия, пол, название отдела, год рождения, стаж. Написать программу, выдающую следующую информацию: - список сотрудников мужского пола отдела Х призывного возраста (старше 18 и младше 30 лет), с указанием стажа работы; - средний возраст сотрудников мужского пола отдела Х. Наименование отдела Х вводится по запросу с клавиатуры.
  Создать массив записей, содержащий сведения о телефонах абонентов. Каждая запись содержит поля – фамилия абонента, адрес, номер телефона. Написать программу, выдающую следующую информацию: - по вводимой фамилии абонента Х и адресу Y выдается номер телефона. Фамилию абонента Х и адрес Y вводится по запросу с клавиатуры.
  Создать массив записей, содержащий сведения о товарах некоторого склада. Каждая запись содержит поля – наименование, цена единицы товара, количество. Написать программу, выдающую следующую информацию: - список товаров, стоимость которых не превышает Х рублей с указанием количества; - общее количество товаров, стоимость которых не превышает Х. Стоимость Х вводится по запросу с клавиатуры.  
  Создать массив записей, содержащий сведения о товарах автосалона. Каждая запись содержит поля – модель автомобиля, цвет, номер двигателя, стоимость. Написать программу, выдающую следующую информацию: - список автомобилей модели Х с указанием цены, цвета и номера двигателя; - самый дорогой автомобиль модели Х. Модель автомобиля Х вводится по запросу с клавиатуры.
  Создать массив записей, содержащий сведения о туристической фирме. Каждая запись содержит поля – наименование страны, наименование города, стоимость тура. Написать программу, выдающую следующую информацию: - список туров в страну Х с указанием наименования города и стоимости тура; - самый дорогой тур в страну Х. Название страны Х вводится по запросу с клавиатуры.
  Создать массив записей, содержащий сведения о студентах группы. Каждая запись содержит поля – фамилия студента, индекс группы (например, ЭС-101) и оценки по трём экзаменам. Написать программу, выдающую следующую информацию: - список отличников группы Х; - процент отличников по отношения к общему количеству студентов группы Х. Индекс группы Х вводится по запросу с клавиатуры.
  Создать массив записей, содержащий сведения об абонентах телефонной компании. Каждая запись содержит поля – фамилия абонента, год установки телефона, номер телефона. Написать программу, выдающую следующую информацию: - список абонентов, отсортированный по полю год установки; - количество установленных телефонов с Х года. Значение Х вводится по запросу с клавиатуры.
  Создать массив записей, содержащий информацию о количестве изделий, собранных рабочими за месяц. Каждая запись содержит поля – фамилия сборщика, наименование цеха, количество изделий, собранных рабочим за месяц. Считая заданными значение расценок по сборке единицы изделия Х, выдать следующую информацию: - ведомость заработной платы рабочих цеха; - общую сумму выплат по цеху. Стоимость сборки единицы изделия Х вводится по запросу с клавиатуры.  
  Создать массив записей, содержащий сведения о сотрудниках таксомоторного парка. Каждая запись содержит поля – фамилия водителя, номер автомобиля, количество выездов за месяц. Написать программу, выдающую следующую информацию: - подсчитать общее количество выездов за месяц; - фамилию водителя, с наибольшим количеством выездов.  
  Создать массив записей, содержащий сведения об услугах частной клиники. Каждая запись содержит поля – название операции, стоимость операции, возрастные ограничения на каждую операцию. Написать программу, выдающую следующую информацию: - список услуг клиники, отсортированный по полю название операции; - по введенному названию операции Х распечатать стоимость и возрастные ограничения. Название операции Х вводится по запросу с клавиатуры.
  Создать массив записей, содержащий сведения о сотрудниках института. Каждая запись содержит поля – фамилия сотрудника, оклад, стаж работы. Написать программу, которая должна: - начислить премию сотрудникам в размере оклада, стаж которых превышает Х лет: - распечатать список сотрудников, получивших премию с указанием размера премии. Величина Х вводится по запросу с клавиатуры.
  Создать массив записей, содержащий сведения о товарах магазина. Каждая запись содержит поля – наименование товара, стоимость, количество. Написать программу, которая; - уменьшит стоимость товаров, количество которых не превышает Х, на 50%; - распечатать список новых цен. Количество Х вводится по запросу с клавиатуры.
  Создать массив записей, содержащий информацию о количестве изделий, собранных рабочими цеха. Каждая запись содержит поля – фамилия рабочего, наименование цеха, количество собранных им изделий за месяц. Написать программу, выдающую следующую информацию: - список рабочих цеха, отсортированный по полю фамилия; - общее количество изделий, собранных рабочими цеха за месяц.
  Создать массив записей, содержащий сведения о сотрудниках таксомоторного парка. Каждая запись содержит поля – фамилия водителя, номер автомобиля, количество выездов за месяц, оплата за каждый выезд. Написать программу, выдающую следующую информацию: - подсчитать общее количество выездов за месяц; - фамилию водителя, с наибольшей суммой оплат за выезды.
  Создать массив записей, содержащий сведения о туристической фирме. Каждая запись содержит поля – наименование страны, цель поездки (например: экскурсионная, отдых), стоимость тура. Написать программу, выдающую следующую информацию: - список туров с целью поездки Х с указанием наименования города и стоимости тура; - самый дешёвый тур с целью поездки Х. Цель поездки Х вводится по запросу с клавиатуры.  
  Создать массив записей, содержащий сведения о товарах автосалона. Каждая запись содержит поля – модель автомобиля, цвет, номер двигателя, стоимость. Написать программу, выдающую следующую информацию: - список автомобилей модели Х с указанием цены, цвета и номера двигателя; - самый дешевый автомобиль модели Х. Модель автомобиля Х вводится по запросу с клавиатуры.
  Создать массив записей, содержащий сведения о сотрудниках института. Каждая запись содержит поля – фамилия, пол, название отдела, год рождения, стаж. Написать программу, выдающую следующую информацию: -список сотрудников женского пола в возрасте от 18 и до 55 лет, с указанием стажа работы; -средний возраст сотрудников женского пола отдела Х. Наименование отдела Х вводится по запросу с клавиатуры.
  Создать массив записей, содержащий сведения о товарах некоторого склада. Каждая запись содержит поля – наименование, цена единицы товара, количество. Написать программу, выдающую следующую информацию: -список товаров, стоимость которых превышает Х рублей с указанием количества; -общую стоимость товаров на складе. Стоимость Х вводится по запросу с клавиатуры.

 




Поделиться с друзьями:


Дата добавления: 2014-12-27; Просмотров: 934; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.008 сек.