Использование множеств
Использование множеств в программах дает следующие преимущества:
- значительно упрощаются сложные операторы if;
- увеличивается наглядность программы и понимание алгоритма решения задачи;
- в ряде случаев экономится память, время компиляции и выполнения (объем памяти, занимаемый одним элементом множества, составляет 1 бит; множественные операции выполняются быстрее).
Недостатки использования множеств объясняются тем, что ввод-вывод множеств не поддерживается языком Паскаль. Для этого нужно писать соответствующие процедуры. При этом если множество состоит из элементов стандартных скалярных типов, особых проблем не возникает. При использовании же скалярных типов пользователя разработка процедур ввода-вывода для множеств довольно сложна и требует много времени и памяти.
Пример. Требуется создать множество из элементов типа Char (выход из фазы создания осуществить при вводе значения ‘z’); найти в нем элемент с минимальным номером в таблице кодов; распечатать все элементы созданного множества в алфавитном порядке. Управление работой программы осуществить из меню.
Program DemoSet;
Var
S: set of Char;
N, Rejim: Char;
Procedure Konstr;
Begin
Writeln (‘Вводите элементы множества из букв a..z; символ z – окончание ввода’);
S: = [ ];
While True do
Begin
ReadLn (N);
S: = S + [ N ];
If N = ‘ z ’
then Exit
End
End;
Procedure MinS;
Begin
N: = ‘ ‘;
While not (N in S) do
N: = Succ(N);
Writeln (‘ Элемент с минимальным номером = ’, N)
End;
Procedure Rasp;
Begin
For N: = ‘ a ’ to ‘ z ’ do
If N in S
Then wtiteln (N)
End;
Begin
While True do
Begin
Writeln (‘ 1 – Создание ’);
Writeln (‘ 2 – Поиск Эл-та с мин-м номером ’);
Writeln (‘ 3 – Вывод Эл-ов мн-ва ’);
Writeln (‘ 4 – Выход из программы ’);
Readln (Rejim);
Case Rejim of
‘ 1 ’: Konstr;
‘ 2 ’: MinS;
‘ 3 ’: Rasp;
‘ 4 ’: Halt
End
End
End.
Дата добавления: 2015-09-27 | Просмотры: 395 | Нарушение авторских прав
|