![]() |
Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Работа с комбинированными типами данных.
Постановка задачи для конкретного варианта: 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; Просмотров: 20809; Нарушение авторского права страницы