Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Примеры программирования задач с использованием множества




Задача 21. Организовать ввод элементов множества и определить, существуют ли общие элементы у введенного множества с множеством, заданным константой.

 

Данная программа продемонстрирует, как можно задать множество. Переменные типа “множество” могут быть типизированными константами.

Переменную v зададим начальными значениями при описании констант. Переменная s является подмножеством множества символов кода ASCII.

 

Программа:

 

program vvod;

const v: set of char = [‘a’, ‘d’, ‘f’, ‘n’, ‘r’];

var

s: set of char;

c: char;

begin

s:= []; c:= #0;

while c <> ‘.’ do

begin

readln(c);

s:= s + [c]

end;

s:= s – [‘.’];

if v * s <> [] then writeln(‘ Имеются общие элементы!’)

end.

В цикле множество s пополняется вводимым с клавиатуры значением переменной с. Сигналом к окончанию ввода служит точка. Цикл продолжается до тех пор, пока с <> ‘.’. По окончании цикла точку вычитаем из множества. Если в двух множествах нет общих элементов, то результатом их пересечения будет пустое множество.

 

Задача 22. Заданы два множества. Вывести на экран результат объединения, разности и пересечения этих множеств.

 

В задаче 21 показано, как ввести множество. Теперь продемонстрируем, как записываются операции над множествами и как организовать вывод элементов множества. При выводе элементов множества приходится проверять наличие каждого возможного элемента на предмет вхождения данного элемента в выводимое множество. Если множество определено как с: set of 1..10, то это означает, что элементами множества могут быть числа 1, 2, 3, 4, 5, 6, 7, 8, 9, 10. В цикле для всех i от 1 до 10 необходимо провести проверку вхождения числа i в выводимое множество с.

for i:= 1 to 10 do if i in c then write(i:3);

Программа:

 

program operation;

type

menge = set of 1..10; {Задан новый тип - множество}

var

a,b,c: menge; {Описаны переменные множественного типа menge}

i, n: integer;

begin

writeln (‘Введите элементы множества a. Конец ввода – 0’);

a:= [];

repeat {Цикл для ввода множества а}

readln(i);

if i in [1..10] then a:= a + [i];

until i = 0;

writeln (‘Введите элементы множества b. Конец ввода – 0’);

b:= [];

repeat {Цикл для ввода множества b}

readln(i);

if i in [1..10] then b:= b + [i];

until i = 0;

c:= a * b; {Операция – пересечение множеств}

writeln (‘Пересечение множеств’);

for i:= 1 to 10 do if i in c then write(i:3);

writeln;

c:= a + b; {Операция – объединение множеств}

writeln (‘Объединение множеств’);

for i:= 1 to 10 do if i in c then write(i:3);

writeln;

c:= a – b; {Операция – разность множеств}

writeln (‘Разность множеств’);

for i:= 1 to 10 do if i in c then write(i:3);

writeln;

{Проверка на подмножество}

if a <= b then writeln(‘ а содержится в b’)

else writeln(‘ а не содержится в b’)

end.

Задача 23. Написать программу генерирования чисел спортлото “6 из 49”.

 

Задача 2 имела ту же формулировку, но решение ее с использованием диапазонного типа имело тот недостаток, что не все шесть выпавших чисел были различными. Используя тип данных “множество” устраним этот недостаток.

 

Программа:

 

program lotto1;

uses crt;

const

n = 6;

type

lotto = set of 1..49;

var

L: lotto;

k: integer;

i: 1..n;

z: 1..49;

ok: boolean;

begin

randomize;

L:= []; {Инициализация множества}

for i:= 1 to n do

{Цикл выполняется 6 раз – количество цифр в результате}

begin

repeat

z:= random(49) + 1; {Генерация случайных чисел}

if z in L then ok:= false {Определение вхождения}

{сгенерированного числа в множество}

else

begin {Присоединение нового числа}

L:= L + [z];

ok:= true

end;

until ok; {Цикл repeat повторяется до тех пор, пока ok имеет}

end; {значение false}

clrscr;

{Вывод шести различных случайных чисел из 49}

for k:= 1 to 49 do if k in L then write(k:4);

end.

 

В программе производится проверка генерируемого числа на предмет вхождения в формируемое множество. Если новое число z уже существует в множестве L, то оно игнорируется и происходит генерирование следующего случайного числа.



КРИТЕРИИ КАЧЕСТВА ПРОГРАММ. ДИАЛОГОВЫЕ ПРОГРАММЫ. ДРУЖЕСТВЕННОСТЬ





Поделиться с друзьями:


Дата добавления: 2016-11-18; Мы поможем в написании ваших работ!; просмотров: 2535 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

В моем словаре нет слова «невозможно». © Наполеон Бонапарт
==> читать все изречения...

2170 - | 2110 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.007 с.