Добрый день, извините за, возможно, глупый вопрос - как вывести на экран множество, оператор write не работает. У меня множество чисел от 1 до N, я формирую из него подмножество элементов( m1), не превышающих 10, как их вывести на экран? Печатать команду:
for i:=1 to N do
if (i in m1) then write(i)
Нет... Только этот. Вывод множества - только полным перебором элементов и проверкой на наличие...
Кстати, и математически понятие "извлечение элемента из множества" не определено ...
В продолжение темы...
Я так понимаю, что операция сравнения m1[1]>m1[2] со множеством m1 тоже не проходит? Как тогда можно подмнжество, состоящее только из гласных букв отсортировать по алфавиту? Я извиняюсь за настойчивость, но я раньше со множествами работала очень мало, а в faq тоже материла не много.
А ко множествам ВООБЩЕ неприменимы такие понятия, как "сортировка" или "порядок следования элементов"... Множество просто хранит некоторое значение из некоторого определенного набора. Поэтому, чтобы вывести на печать множество букв латинского алфавита, отсортированное, например, по возрастанию, достаточно проверять на вхождение отсортированные элементы:
for ch := 'a' to 'z' do begin
if ch in myset then write(ch);
end;
А если задание: из вводимой строки создать множество гласных букв и напечатать их в алфавитном порядке? Как создать цикл?
Задача простая, но что - то меня на ней заклинило.
А что, тот же самый цикл не пойдет? Или гласные буквы не являются подмножеством ВСЕХ букв? Тебе надо только позаботиться о том, чтобы ВНОСИТЬ во множество только гласные буквы, тогда будут выводиться отсортированные гласные. Ну, если хочешь, сделай так:
for ch := #0 to #255 do begin
if ch in myset then write(ch);
end;
pank, разговор останется беспредметным, если ты не приведешь весь код (или то, что относится к множествам, о которых речь).
У меня есть конкретное подозрение, что ты хотя и организовала переменные для множеств m и m1, на самом деле ничего туда не положила, то есть они у тя пустые. Вот ниже код, который той же самой конструкцией, что и у тебя, печатает то, что требуется.
const
N=20;
var
m1:set of 1..N;
i:integer;
begin
m1:=[1,2,3];
for i:=1 to N do if i in m1 then Write(i,' ');
ReadLn;
end.