Лабораторная работа №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:
построить пересечение последовательностей a1,..,a25 и b1,..,bn (т.е. получить в каком-нибудь порядке все числа, принадлежащие обеим последовательностям одновременно).
Построить объединение данных последовательностей.
Получить все члены последовательности b1,..,bn ,которые не входят в последовательность а1,..,a25.
Верно ли, что все члены последовательности 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.
Задания
Даны три множества X1. Х2, ХЗ, содержащие целые числа из диапазона 1 ... 100. Известно, что мощность каждого из этих множеств равна 10. Сформировать новое множество , из которого выделить подмножество нечетных чисел. На экран вывести исходные и полученное множества. Значения элементов исходных множеств ввести с клавиатуры.
Даны три множества X1, Х2, ХЗ, содержащие целые числа из диапазона 1 ... 100. Известию, что мощность каждого из этих множеств равна 10. Сформировать новое множество и вывести на экран его мощность. Проверить, есть ли в множестве Y числа, делящиеся на 6 без остатка. Значения элементов исходных множеств ввести с клавиатуры.
Даны два множества М и N, состоящие из 10 целых чисел из диапазона 1 ... 100. Из данных множеств выделить соответственно подмножества M1 чисел, делящихся на 3 без остатка, и N1 чисел, делящихся на 2 без остатка. Множества М и N описать как типизированные константы. На печать вывести мощность и значения элементов множества .
Даны три множества XI, Х2, ХЗ, содержащие целые числа из диапазона 100 ... 200. Известно, что мощность каждого из этих множеств равна 10. Сформировать новое множество . На печать вывести множен да X1, Х2, ХЗ и Y. Проверить выполнение условий .
Даны три множества X1 {1, 2, 3, ... , 20}, Х2 = {10, 11, 12, …, 30} и ХЗ = {1, 3, 5, ..., 19, 21}. Сформировать множество , из которого выделить подмножество Y1 чисел, делящихся на 4 без остатка. На печать вывести множество Y и мощность множества Y1. Исходные множества ввести с клавиатуры.
В восточном календаре года носят названия животных: крысы, быка, тигра, зайца, дракона, змеи, лошади, овцы, обезьяны, петуха, собаки, свиньи. Кроме того, через каждые два года меняется цвет в следующем порядке: синий, красный, желтый, белый, черный. Таким образом, 1992-й год - это год черной обезьяны, 1993 - это год черного петуха, 1994-й - год синей собаки и т.д. Написать программу, которая переводит заданный год в его название по восточному календарю (используйте тип "перечисление").
Даны три множества XI {1, 2, 3, ..., 20}, Х2 = {10, 20, ..., 190, 200} и ХЗ = {10, 11, 12, ..., 40}. Сформировать множество Y = (Х2 Ç ХЗ) \ ((Х1 Ç Х2) È (X1 Ç ХЗ)) и множество Y1, состоящее из элементов Y, деленных на 2. Если полученное в результате деления число не целое, то округлить его до ближайшего целого. На печать вывести Y и Y1. Исходные множества ввести с клавиатуры.
Даны три множества X1 = {Т2, Т4, Т6, Т8, Т10}, Х2 = {Т1, Т2, ТЗ, Т4, Т5} и ХЗ = {Т2, ТЗ, Т5, Т7, Т8}. Сформировать множество Y = (X2 \ X3) U (Х1 \ ХЗ). На печать вывести Y и его мощность. Проверить выполнение условия X3ÍY. Исходные множества описать как типизированные константы.
Разработать программу для определения, какому алфавиту (латинскому или русскому) принадлежит введенный с клавиатуры символ. На печать вывести введенный символ с комментарием, например