Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
[ОАиП] Лаба. 4.Массив_Множество.doc
Скачиваний:
4
Добавлен:
11.11.2019
Размер:
121.94 Кб
Скачать

Лабораторная работа №4

Множества и одномерные массивы

Перед началом работы необходимо изучить правила описания и определения множеств и одномерных массивов, возможные операторы, операции и процедуры для работы с переменными данного типа.

Пример на обработку одномерного массива:

Задан массив целых чисел x1, x2, …, xn и целое число a. Определить местоположение числа a в массиве x1, x2, …, xn и определить сумму элементов массива, расположенных после первого вхождения числа a в массив.

Program PR5;

Uses Crt;

const

Size=20;

type

Mas=array [1..Size] of integer;

var

X:Mas;

a, Sum : integer;

i, n , j :byte;

begin

ClrScr;

writeln('Введите размер массива');

read(n);

writeln('Введите элементы массива');

for i:=1 to n do

begin

write (' X[', i, ']= ');

read ( X[i] )

end;

writeln('Введите число для поиска');

read(a);

i:=1;

while (X [i] <> a) and (i<>n) do

Inc(i);

Sum:=0;

if X [i] = a then

begin

for j:=i to n do Sum:=Sum+X[j];

writeln('Сумма =', Sum)

end

else

writeln(' Элемент ', a, 'не найден !')

end.

Пример работы с множеством:

Даны натуральное число na1,…,a25,b1,..,bn . среди a1,..,a25 нет повторяющихся , нет их и среди b1,..,bn:

  1. построить пересечение последовательностей a1,..,a25 и b1,..,bn (т.е. получить в каком-нибудь порядке все числа, принадлежащие обеим последовательностям одновременно).

  2. Построить объединение данных последовательностей.

  3. Получить все члены последовательности b1,..,bn ,которые не входят в последовательность а1,..,a25.

  4. Верно ли, что все члены последовательности a1,..,a25 входят в последовательность b1,..bn?

program Set;

uses crt;

type

a=set of 1..15;

b=set of 1..17;

const

c:a=[1,7,5,3,9,12,15,13];

d:b=[1,2,4,7,6,5,3,8,9,10,11,12,13,14,15,16,17];

var n,i,k:integer;

m:set of 1..20;

l:set of 1..30;

begin

clrscr;

writeln ('a)') ;

for n:=1 to 20 do {a}

begin

if (n in c) and (n in d)

then

begin

write(' ',n:2);

end;

end;

{****************************************}

l:=c+d;

writeln (' ') ;

writeln ('b)') ;

for n:=1 to 20 do {b}

if n in l then write(' ',n:2);

{*****************************}

l:=d-c;

writeln (' ') ;

writeln ('c)') ;

for n:=1 to 20 do {c}

if n in l then write(' ',n:2);

{*******************************}

writeln('');

writeln('d)');

if d<=c then writeln('verno') {d}

else writeln('ne verno');

end.

Задания

  1. Даны три множества X1. Х2, ХЗ, содержащие целые числа из диапазона 1 ... 100. Известно, что мощность каждого из этих множеств равна 10. Сформировать новое множество , из которого выделить подмножество нечетных чисел. На экран вывести исходные и полученное множества. Значения элементов исходных множеств ввести с клавиатуры.

  2. Даны три множества X1, Х2, ХЗ, содержащие целые числа из диапазона 1 ... 100. Известию, что мощность каждого из этих множеств равна 10. Сформировать новое множество и вывести на экран его мощность. Проверить, есть ли в множестве Y числа, делящиеся на 6 без остатка. Значения элементов исходных множеств ввести с клавиатуры.

  3. Даны два множества М и N, состоящие из 10 целых чисел из диапазона 1 ... 100. Из данных множеств выделить соответственно подмножества M1 чисел, делящихся на 3 без остатка, и N1 чисел, делящихся на 2 без остатка. Множества М и N описать как типизированные константы. На печать вывести мощность и значения элементов множества .

  4. Даны три множества XI, Х2, ХЗ, содержащие целые числа из диапазона 100 ... 200. Известно, что мощность каждого из этих множеств равна 10. Сформировать новое множество . На печать вывести множен да X1, Х2, ХЗ и Y. Проверить выполнение условий .

  5. Даны три множества X1 {1, 2, 3, ... , 20}, Х2 = {10, 11, 12, …, 30} и ХЗ = {1, 3, 5, ..., 19, 21}. Сформировать множество , из которого выделить подмножество Y1 чисел, делящихся на 4 без остатка. На печать вывести множество Y и мощность множества Y1. Исходные множества ввести с клавиатуры.

  6. В восточном календаре года носят названия животных: крысы, быка, тигра, зайца, дракона, змеи, лошади, овцы, обезьяны, петуха, собаки, свиньи. Кроме того, через каждые два года меняется цвет в следующем порядке: синий, красный, желтый, белый, черный. Таким образом, 1992-й год - это год черной обезьяны, 1993 - это год черного петуха, 1994-й - год синей собаки и т.д. Написать программу, которая переводит заданный год в его название по восточному календарю (используйте тип "перечисление").

  7. Даны три множества XI {1, 2, 3, ..., 20}, Х2 = {10, 20, ..., 190, 200} и ХЗ = {10, 11, 12, ..., 40}. Сформировать множество Y = (Х2 Ç ХЗ) \ ((Х1 Ç Х2) È (X1 Ç ХЗ)) и множество Y1, состоящее из элементов Y, деленных на 2. Если полученное в результате деления число не целое, то округлить его до ближайшего целого. На печать вывести Y и Y1. Исходные множества ввести с клавиатуры.

  8. Даны три множества X1 = {Т2, Т4, Т6, Т8, Т10}, Х2 = {Т1, Т2, ТЗ, Т4, Т5} и ХЗ = {Т2, ТЗ, Т5, Т7, Т8}. Сформировать множество Y = (X2 \ X3) U (Х1 \ ХЗ). На печать вывести Y и его мощность. Проверить выполнение условия X3ÍY. Исходные множества описать как типизированные константы.

  9. Разработать программу для определения, какому алфавиту (латинскому или русскому) принадлежит введенный с клавиатуры символ. На печать вывести введенный символ с комментарием, например