Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ множества

Автор: -Екатерина- 23.11.2006 23:51

var
cf: set of 100..107;
a: integer;
begin
cf:=[ ];
a:=12;
cf:=cf+[a];
writeln (' ',a in cf,' ', size of (cf));
end.

не пойму почему меняя значения в описании типа set и давая разные значения а на экран выводится то false 2, то false 1, то же с true
от чего это зависит??

Автор: volvo 24.11.2006 0:17

Цитата
от чего это зависит??
От значений, которые задаются граничными для множества... Все дело здесь - во внутреннем представлении множества: это набор битов, по одному на каждый допустимый элемент множества. То есть, если ты задашь
cf: set of 0 .. 7;
то для представления этого множества достаточно 8 бит (1 байт), если
cf: set of 0 .. 9;
, то понадобится уже 10 бит, а это 2 байта...

Теперь по поводу True/False... Всегда, когда значение A находится в интервале, разрешенном базовым диапазоном множества, результат будет True. Во всех остальных случаях - False...

Но твоя программа, например, и на диапазоне
cf: set of 100 .. 107;
выдает размер в 2 байта. Почему? Попробуй догадаться сама. Нужно немного подправить программу, чтобы результат всегда был ожидаемым и правильным... smile.gif


Автор: -Екатерина- 24.11.2006 2:36

спасибо)