Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методические указания.pdf
Скачиваний:
81
Добавлен:
13.02.2015
Размер:
1.2 Mб
Скачать

14.ЛАБОРАТОРНАЯ РАБОТА №12 «МНОЖЕСТВА»

Цель работы: Сформировать навыки по созданию и работе со структурами данных (множествами) средствами изучаемого языка программирования

13.1Задания к лабораторной работе №12

1.Известны сорта роз, выращиваемых тремя цветоводами. Определить те сорта, которые имеются у каждого из цветоводов, которые есть хотя бы

уодного из цветоводов, которых нет ни у одного из цветоводов.

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

икакие из этих имен не встречаются ни в одном классе.

3.Задан некоторый набор товаров. Определить для каждого из товаров, какие из них имеются в каждом из n магазинов, какие товары есть хотя бы

водном магазине и каких товаров нет ни в одном магазине.

4.Имеется список класса (все имена различны). Определить, есть ли в классе человек, который побывал в гостях у всех. (Для каждого ученика составить множество побывавших у него в гостях друзей, сам ученик в это множество не входит.)

5.Имеется множество, содержащее натуральные числа из некоторого диапазона. Сформировать два множества, первое из которых содержит все простые числа из данного множества, а второе — все составные.

6.На трех участках возделывают сельскохозяйственные культуры. Известны виды культур, выращиваемых на каждом из участков. Определить виды тех культур, которые возделывают на каждом из участков; возделывают хотя бы на одном из участков; не возделывают ни на одном участке. (Культуры: картофель, укроп, морковь, горох, капуста, редис.)

7.Известны марки машин, изготовляемых в данной стране и импортируемых за рубеж. Даны некоторые N стран. Определить для каждой из марок, какие из них были:

доставлены во все страны;

доставлены в некоторые из стран;

не доставлены ни в одну страну.

8.В озере водится несколько видов рыб. Три рыбака поймали рыб, представляющих некоторые из имеющихся видов. Определить:

какие виды рыб есть у каждого рыбака;

какие рыбы есть в озере, но нет ни у одного из рыбаков.

99

9.В N колхозах выращивают некоторые сельскохозяйственные культуры из имеющегося перечня. Определить культуры:

возделываемые во всех колхозах;

возделываемые только в некоторых колхозах.

10.Есть список игрушек, некоторые из которых имеются в N детских садах. Определить игрушки из списка:

которых нет ни в одном из детсадов;

которые есть в каждом из детсадов.

11.Составить программу, которая вычисляет сумму тех элементов двумерного массива, номера строк и столбцов которых принадлежат соответственно непустым множествам S1 и S2.

12.Задано некоторое множество М и множество T того же типа. Подсчитать, сколько элементов из множеств T и М совпадает.

13.Из диапазона целых чисел m... n выделить множества чисел:

1)делящихся без остатка или на k, или на m. (k, m — простые числа);

2)делящихся на k и m без остатка.

14.Дан текст из цифр и строчных латинских букв, за которыми следует точка. Определить, каких букв - гласных или согласных - больше в этом тексте.

15.Вычислить количество различных цифр в десятичной записи числа.

16.Напечатать в возрастающем порядке все цифры, не входящие в запись данного натурального числа.

17.Дан текст из строчных латинских букв, за которыми следует точка. Напечатать все буквы, входящие в текст не менее двух раз.

18.Дан текст из строчных латинских букв, за которыми следует точка. Напечатать все буквы, входящие в текст по одному разу.

19.Дан текст, за которым следует точка. В алфавитном порядке напечатать все строчные русские гласные буквы, входящие в этот текст.

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

21.Дан текст на русском языке. Напечатать в алфавитном порядке все согласные буквы, которые не входят ни в одно слово.

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

23.Дан текст на русском языке. Напечатать в алфавитном порядке все звонкие согласные буквы, которые входят хотя бы в одно слово.

24.Дан текст на русском языке. Напечатать в алфавитном порядке все глухие согласные буквы, которые не входят хотя бы в одно слово.

25.Дан текст на русском языке. Напечатать в алфавитном порядке все

100

согласные буквы, которые входят только в одно слово.

26.Дан текст на русском языке. Напечатать в алфавитном порядке все глухие согласные буквы, которые не входят только в одно слово.

27.Дан текст на русском языке. Напечатать в алфавитном порядке все звонкие согласные буквы, которые входят более чем в одно слово.

28.Дан текст на русском языке. Напечатать в алфавитном порядке все гласные буквы, которые не входят более чем в одно слово.

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

30.Дан текст на русском языке. Напечатать в алфавитном порядке все цифры, которые входят в каждое слово.

101

15.ЛАБОРАТОРНАЯ РАБОТА №13 «ЗАПИСИ (СТРУКТУРЫ)»

Цель работы: Сформировать навыки по созданию и работе со структурами данных (записями) средствами изучаемого языка программирования.

13.1 Пояснения к работе

Тип-запись включает ряд компонент, называемых полями, которые могут быть разных типов. При задании типа-записи после зарезервированного слова record следует перечислить все поля типа-записи с указанием через двоеточие их типов и завершить задание типа словом end. Поля отделяются друг от друга точкой с запятой, точка с запятой ставится и после завершающего слова end.

Пример: Типы-записи

Type

 

Data = record

//Тип - дата рождения

Year: Integer;

 

Month: 1..12;

 

Day: 1..31;

 

end;

 

Так, для введенных выше типов можно задать, например:

Var

Dat: Data;

Const

Birthday: Data = (Year: 1971; Month: 12; Day: 9);

Пример: Использование полей записей

Dat.Year:= 2006;

а можно и так:

with Dat do begin Year:= 2006; Month:= 7; Day:=14;

end;

Пример15.1 Сформировать файл данных о студентах и распечатать всех девушек из данного списка

Данная задача может быть разбита на 2 подзадачи:

Создание файла и его заполнение данными

Чтение данных из файла БД и их анализ

Для начала объявим собственный тип данных, описывающий студента Tstudent. Данный тип-запись будет содержать 4 поля, описывающих фамилию (Fam), имя (name), возраст (age) и пол (sex). Для определения пола введем дополнительный перечислимый тип Tsex.

102

type Tsex=(male,female); TStudents=record

Fam:string[20];

name:string[20];

age:byte;

sex:Tsex;

end;

Для заполнения данных о студенте создадим процедуру create_stud, в которую в качестве параметра переменной будет передаваться параметр типа

Tstudents.

Procedure create_stud(var stud:Tstudents); var ch:char;

begin

write('Familiya: '); readln(stud.Fam); write('Name: '); readln(stud.name); write('Age: '); readln(stud.age); repeat

write('Sex of student M/W?'); readln(ch); case Upcase(ch) of

'M': stud.sex:=male; 'W': stud.sex:=female;

end;

until Upcase(ch) in ['M','W']; end;

Для вывода на экран данных о студенте создадим процедуру print_stud, в которую в качестве параметра значения будет передаваться параметр типа

Tstudents.

Procedure print_stud(stud:Tstudents); begin

writeln('Familiya: ',stud.Fam); writeln('Name: ',stud.name); writeln('Age: ',stud.age); case stud.sex of

male: writeln('Sex: Male'); female:writeln('Sex: Female');

end;

end;

В головной программе пользователю будет предложено ввести 1 или 2 для выполнения соответственно следующих действий:

1 - Создание и заполнение файла БД

103

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

var

f:file of Tstudents; student:Tstudents; ch:char; filename:string; menu,amount,i:byte;

students:array of Tstudents; begin

writeln('For create file press 1'); writeln('For analise file press 2'); readln(menu);

case menu of 1: begin

//Создание и заполнение файла БД repeat

write('Enter file name for DB:'); readln(filename); {$I-}

assign(f,filename);

rewrite(f); {$I+}

if Ioresult<>0 then writeln('File not found') else break;

until false; repeat

create_stud(student); // Формирование переменной write(f,student); // Запись переменной в файл write('Continue Yes/No?'); readln(ch);

until Upcase(ch)='N'; close(f); // Сохранение файла

end; 2: begin

//Подключение к созданному файлу repeat

write('Enter file name of DB:'); readln(filename); {$I-}

assign(f,filename);

reset(f); {$I+}

if Ioresult<>0 then writeln('File not found') else break;

until false; amount:=filesize(f); setlength(students,amount);

104