Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Работа с комбинированными типами данных.
Постановка задачи для конкретного варианта: 1. Существует некоторая фирма, которая образована в 1991 году. Составить список сотрудников этой фирмы, содержащей 20 человек. Список должен содержать следующие сведения для каждого сотрудника: ФИО, дату рождения, год поступления в фирму, оклад, адрес (улица, номер дома и квартиры). Информацию о каждом сотруднике оформить в виде записи. Записи объединить в массив. 2. Составить программу, которая выполняет ввод и печать списка сотрудников, фамилии которых начинаются с буквы Т, и их даты рождения. Ввод и печать оформить в виде процедур. Исходные данные:
Текст программы:
program lab8{ вариант № 8}; type man=record fio: record fameli, name, och: string[15]; end; date: record day, mes, god: integer; end; godpos: integer; many: integer; adres: record ul: string[15]; dom, kv: integer; end; end; var sot: array [1..20] of man; n: integer; symb: string[1]; procedure vvod; begin for n: =1 to 20 do begin writeln(‘Вводим данные на сотрудникa номер: ’, n); write(‘Фамилия’); readln(sot[n].fio.fameli); write(‘Имя’); readln(sot[n].fio.name); write(‘Отчество’); readln(sot[n].fio.och); writeln(‘Дата рождения’); write(‘День’); readln(sot[n].date.day); write(‘Месяц’); readln(sot[n].date.mes); write(‘Год’); readln(sot[n].date.god); write(‘Год поступления в фирму’); readln(sot[n].godpos); write(‘Заработная плата’); readln(sot[n].many); writeln(‘Адрес проживания’); write(‘Улица’); readln(sot[n].adres.ul); write(‘Номер дома’); readln(sot[n].adres.dom); write(‘Номер квартиры’); readln(sot[n].adres.kv); end; end; procedure list(n: integer); begin writeln('--------------------------------------------------------------------------------'); write(sot[n].fio.fameli, ' ', sot[n].fio.name, ' ', sot[n].fio.och); writeln(' Дата рождения ', sot[n].date.day, '/', sot[n].date.mes, '/', sot[n].date.god); writeln; end; begin vvod; {процедура ввода исходных данных} writeln('Распечатать список сотрудников, фамилии которых начинаются с буквы Т'); writeln(' и их даты рождения.'); writeln; for n: =1 to 20 do begin symb: =copy(sot[n].fio.fameli, 1, 1); if symb='Т' then list(n); end; end.
Результаты выполнения программы:
Варианты заданий. 1. Распечатать анкетные данные сотрудников, имеющих срок службы больше 5 лет. 2. Распечатать анкетные данные сотрудников, которым больше 25 лет. 3. Распечатать анкетные данные сотрудников, у которых улица начинается с буквы С. 4. Распечатать ФИО сотрудников, у которых улица начинается с буквы М, и номер дома больше 5. 5. Распечатать анкетные данные сотрудников, месяц рождения которых больше 6 и фамилия начинается с буквы Л. 6. Распечатать анкетные данные сотрудников, упорядоченные по ФИО и Улицам. 7. Распечатать список сотрудников, фамилии которых начинаются с буквы А, и их оклад. 8. Распечатать список сотрудников, фамилии которых начинаются с буквы В и Г, и год их поступления в фирму. 9. Распечатать фамилии и даты рождения сотрудников, имеющих номер квартиры меньше 35. 10. Распечатать список сотрудников, упорядоченный по адресам (т.е. по улице, номерам дома и квартиры). 11. Упорядочить список сотрудников по году поступления в фирму и распечатать его. 12. Вычислить средний оклад сотрудников и распечатать список сотрудников, имеющих оклад выше среднего. 13. Вычислить средний оклад сотрудников и распечатать список сотрудников, имеющих оклад ниже среднего. 14. Вычислить средний оклад сотрудников и распечатать список сотрудников, имеющих оклад, равный среднему. 15. Упорядочить список сотрудников фирмы по году рождения и распечатать его. 16. Распечатать список сотрудников, упорядоченный по алфавиту. 17. Распечатать список сотрудников, упорядоченный по месяцу рождения. 18. Распечатать список сотрудников, фамилии которых начинаются с буквы Р, упорядоченный по году рождения. 19. Распечатать анкетные данные сотрудников, упорядоченные по дате рождения. 20. Распечатать ФИО и адреса сотрудников, которые проработали в фирме меньше года. 21. Распечатать ФИО сотрудников, оклад которых выше среднего в 1.2-1.5 раза. 22. Распечатать ФИО сотрудников, в названии улиц которых есть буква А. 23. Распечатать ФИО и номера домов сотрудников, у которых номера квартир начинаются с 3, 4, 5, 6, 7, 8. 24. 25) Распечатать ФИО и дату рождения сотрудников, у которых номера домов меньше 20, а номера квартир больше 5.
Множественные типы данных. Множества.
Множества - это наборы однотипных логически связанных друг с другом объектов. Количество элементов, входящих в множество, может меняться в пределах от 0 до 256 (множество, не содержащие элементов, называется пустым). Именно непостоянством количества своих элементов множества отличаются от массивов и записей. Два множества являются эквивалентными тогда и только тогда, когда все элементы одинаковы причем порядок следования элементов в множестве безразличен. Описание типа множества имеет вид: < имя типа> =SET OF < базовый тип>, где < имя типа> - правильный идентификатор; SET, OF - зарезервированные слова; < базовый тип> - базовый тип элементов множества, в качестве которого может использоваться любой порядковый тип, кроме WORD, LONGINT, INTEGER. Для задания множества используется так называемый конструктор множества: список спецификаций элементов множества, отделяемых друг от друга запятыми, список обрамляется квадратными скобками. Операции над множествами: - Пересечение множеств. Результатом операции пересечения двух множеств А*В будет множество С, состоящее только из тех элементов которые принадлежат, как множеству А, так и множеству В. Пример: [1, 2, 3, 4]*[3, 4, 5, 6] результат [3, 4]
С = А * В А В С: = А * В
+ - Объединение множеств. Результатом операции объединения множеств А+В будет множество С, включающее как все элементы множества А, так и все элементы множества В. Пример: [1, 2, 3, 4]+[3, 4, 5, 6] результат [1, 2, 3, 4, 5, 6]
А В С = А È В С: = А + В
- Разность множеств. Результатом операции разности двух множеств А-В, будет множество С, состоящее только из тех элементов множества А, которые не входят в множество В. Пример: [1, 2, 3, 4]-[3, 4, 5, 6] результат [1, 2]
С = А \ В А В С: = А - В
Результатом операции сравнения А=В будет TRUE, а операции А< > В будет FALSE, только тогда, когда А и В содержат одни и те же элементы. Результатом операции сравнения А< =B будет TRUE, если множество А является подмножеством множества В. Результатом операции сравнения A> =B будет TRUE, если множество А включает в себя все элементы множества В. Результатом операции принадлежности Х in A будет TRUE, если значение Х какого либо порядкового типа Т является элементом множества А того же типа Т.
A· Х Î А If X in A thin
Пример операций принадлежности и объединения множеств. PROGRAM Dem_Set_Type; USES Crt; TYPE SetType =set of char; {объявление отдельного типа для передачи параметров в My function} VAR Myset, Set1, Set2: Settype; CH: char; FUNCTION Myfunction (Var set: Set type): char;
VAR Flag: char; BEGIN REPEAT Flag: =UpCase(ReadKey); UNTIL Flag IN Var Set; Writeln(‘ Правильно!!! ’); Myfunction: = Flag; END; BEGIN MySet: = [‘Y’, ’N’]; Writeln(‘Допускаются ответы только Y или N’); CH: = Myfunction (myset); Set1: =[‘K’]; Myset: = Set1 + Myset; {Слияние двух множеств} Writeln(‘Допускается также К’); CH: =Myfunction (Myset); REPEAT UNTIL KeyPressed; {Ожидается нажатие клавиши для Возврата в ИИО} END.
Лабораторная работа № 9. Популярное:
|
Последнее изменение этой страницы: 2016-03-15; Просмотров: 25753; Нарушение авторского права страницы