Set Printing - алгоритмичен език на Паскал

Комплекти за печат

При работа с комплекти е важен въпросът с разпечатването на елементите от комплекта. Имайте предвид, че в повечето версии на езика променливите от типа "set" не могат да бъдат именувани в изрази WRITE. Например не можете да отпечатате комплект като този:

VAR A: КОМПЛЕКТ 1.9;

Тук няма нищо изненадващо, тъй като дори ако A е масив, той също не може да бъде отпечатан незабавно с помощта на един оператор WRITE (A). Циклите са организирани за показване на елементи от масив.

За да отпечатате елементите на набор, трябва също да организирате цикъл (единичен), вътре в който е въведена променлива, която преминава през всички възможни стойности на този набор и преди оператора WRITE, в рамките на конструкцията IF, е провери дали този елемент е включен в определен набор:

ако K в SET1, тогава напишете (K).

По правило процедурите се организират за целите на отпечатването на зададените елементи. Да предположим, че имаме работа с множества, състоящи се от цели числа в диапазона NIZ и VERH. Нека зададем множествения тип TS за тези граници:

тип INT = NIZ.VERH; TS = набор от INT.

След това можете да напишете процедура, която съдържа набор като параметър:

процедура PRINTSET (OS: TS);

¦ за M: = NIZ към VERH правя

¦ ако M в OS, тогава напишете ln (M);

Вече можете да се обърнете към тази процедура, за да отпечатате комплекти, само ако те се състоят от елементи, които не излизат извън обхвата NIZ.VERH. Да кажем в раздела за константите:

const NIZ = 0; VERH = 10;

тогава комплектите могат да бъдат отпечатани, като се позовавате на процедурата:

а) PRINTSET ([5,6,7]); б) PRINTSET ([2]); в) PRINTSET ([3.8]).

Обжалването пред процедурата може да бъде организирано и под формата:

var SET1, SET2: TS;

PRINTSET (SET1); PRINTSET (SET1 + SET2); и т.н.

ПРИМЕР 3. В заключение разгледайте целия пример, където ще демонстрираме всички онези действия, които са дефинирани върху множества:

тип КОСТ = 1.6; BROSOK = набор от KOST;

процедура SRAWNENIE (D: BROSOK);

¦ за K: = 1 до 6 do

¦ ако K в D, тогава напишете (K: 4); writeln;

¦ напишете ('[1,3,4] + [2,4,6] ='); СРАВЕНИЕ (C);

¦ напишете ('[1,3,4] - [2,4,6] ='); СРАВЕНИЕ (C);

¦ напишете ('[1,3,4] * [2,4,6] ='); СРАВЕНИЕ (С);

ОБЯСНЕНИЕ. Програмата дефинира множества A, B, C от тип BROSOK, чиито елементи са цели числа от диапазона [1.6], и процедурата за разпечатване на елементите на такива комплекти.

ЗАБЕЛЕЖКА 1. Ако даден набор е посочен от изброен тип, тогава неговите елементи не могат да бъдат отпечатани. Могат да се отпечатват само елементи от пореден тип: INTEGER, CHAR, BOOLEAN, интервал.

ЗАБЕЛЕЖКА 2. Един и същ набор от данни може да бъде организиран като линеен масив ARRAY, като набор от SET и като низ от тип STRING. Кой от тези видове е за предпочитане? Ако действията се извършват върху елементи (числа), тогава ARRAY е по-добре. Ако проблемът е за връзката на елементи от няколко множества или въпроса за влизането на някои обекти в множеството, тогава SET.