Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Работа с комбинированными типами данных.

Постановка задачи для конкретного варианта:

1. Существует некоторая фирма, которая образована в 1991 году. Составить список сотрудников этой фирмы, содержащей 20 человек. Список должен содержать следующие сведения для каждого сотрудника: ФИО, дату рождения, год поступления в фирму, оклад, адрес (улица, номер дома и квартиры). Информацию о каждом сотруднике оформить в виде записи. Записи объединить в массив.

2. Составить программу, которая выполняет ввод и печать списка сотрудников, фамилии которых начинаются с буквы Т, и их даты рождения. Ввод и печать оформить в виде процедур.

Исходные данные:

Анисимов Петр Иванович Родился 23.1.1960 В фирме с 1991 года Зарплата 15000 рублей Проживает по адресу: Улица Ленина 12-45 Синилов Сергей Анатольевич Родился 14.5.1964 В фирме с1991 года Зарплата 14500 рублей Проживает по адресу: Улица Мира 67-19 Шорапов Евгений Владимирович Родился 28.2.1969 В фирме с 1991 года Зрплата 14000 Проживает по адресу: Улица Левченко 84-37
Бажин Никита Андреевич Родился 3.9.1963 В фирме с 1991года Зарплата 13500 рублей Проживает по адресу: Улица Вагонная 94-36 Созинов Алексей Петрович Родился 13.12.1964 В фирме с 1991года Зарплата 13000 рублей Проживает по адресу: Улица Куйбешева 68-83 Малышев Василий Владимирович Родился 18.6.1968 В фирме с 1991года Зарплата 12500 рублей Проживает по адресу: Улица Охотников 8-3
Мельникова Лариса Анатольевна Родилась 11.2.1959 В фирме с 1991 года Зарплата 12000 рублей Проживает по адресу: Улица Кирова 83-56 Тихонов Сергей Генадьевич Родился 30.3.1967 В фирме с 1991года Зарплата 11500 рублей Проживает по адресу: Улица Автозаводская 42-88 Еговцев Иван Артурович Родился 18.9.1968 В фирме с 1991года Зарплата 11000 рублей Проживает по адресу: Улица Дзержинского 23-69
Ползунова Елена Андреевна Родилась 15.10.1962 В фирме с 1991 года Зарплата 10500 рублей Проживает по адресу: Улица Дружбы 28-75 Михайлов Артем Егоровну Родился 2.11.1970 В фирме с 1992 года Зарплата 10000 рублей Проживает по адресу: Улица Невская 13-46 Смирнов Никита Владимирович Родился 3.8.1968 В фирме с 1992 года Зарплата 9500 рублей Проживает по адресу: Улица Болотная 59-38
Токарев Надежда Александровна Родилась 4.7.1970 В фирме с 1992 года Зарплата 9000 рублей Проживает по адресу: Улица Кочегаров 75-63 Маслова Нина Михайловна Родилась 7.3.1966 В фирме с 1993 года Зарплата 8500 рублей Проживает по адресу: Улица Васнецова 49-92 Молчановский Ильнар Ирекович Родился 9.8.1969 В фирме с 1993 года Зарплата 8000 рублей Проживает по адресу: Улица Лебедева 34-81
Корягина Нина Плахова Родилась 10.2.1970 В фирме с 1994 года Зарплата 7500 рублей Проживает по адресу: Улица Калинина 24-12 Егорова Пелагея Луповна Родилась 12.1.1971; В фирме с 1996 года Зарплата 7000 рублей Проживает по адресу: Улица Нефтяников 47-38 Гаспер Валентина Александровна Родилась 16.11.1972 В фирме с 1998 года Зарплата 6500 рублей Проживает по адресу: Улица Докучаево 75-94
Теплоухов Юрий Леонидович Родился 25.5.1978 В фирме с 2000 года Зарплата 6000 рублей Проживает по адресу: Улица Заречная 28-47 Кирьянов Антон Алексеевич Родился 28.8.1968 В фирме с 1993 года Зарплата 12700 рублеу Проживает по адресу: Улица Кислотная 26-14  

 

 

Текст программы:

 

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.

 

 

Результаты выполнения программы:

  Распечатать список сотрудников, фамилии которых начинаются с буквы Т и их даты рождения. -------------------------------------------------------------------------------- Тихонов Сергей Геннадьевич Дата рождения 30/3/1967 -------------------------------------------------------------------------------- Токарева Надежда Александровна Дата рождения 4/7/1970 -------------------------------------------------------------------------------- Теплоухов Юрий Леонидович Дата рождения 25/5/1978 -------------------------------------------------------------------------------- Конец данных , нажмите Enter.  

Варианты заданий.

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; Просмотров: 324; Нарушение авторского права страницы


lektsia.com 2007 - 2017 год. Все права принадлежат их авторам! (0.08 с.) Главная | Обратная связь