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

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

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

Автор: dog 18.10.2010 7:43

Задача.

С клавиатуры вводится число. Проверить, участвуют ли в записи числа все цифры. При решении использовать множества.

Есть вариант


PROGRAM PRP4;

VAR

digits: SET OF BYTE;
number:BYTE;

BEGIN
digits:=[0..9];
WRITELN('Введте число');
READLN(number);
IF number IN digits THEN
WRITELN('В записи участвуют все цифры')
ELSE
WRITELN('В записи не участвуют все цифры');
END.



Подскажите как правильно?

Автор: Lapp 18.10.2010 8:05

Цитата(dog @ 18.10.2010 4:43) *
Подскажите как правильно?


примерно так:
const
digits: set of byte = [0..9];

var
number: LongInt;
d: byte;

begin
{ input number }
number:=Abs(number); { just in case }
repeat
d:= number mod 10;
number:= number div 10;
digits:= digits - [d]
until number=0;
if digits=[] then WriteLn('All the digits are in use') else WriteLn('Some digits not used');
ReadLn
end.

Я не проверял.

dog, а чего ты не отвечаешь, когда тебе пишут? грустно как-то слышать молчание..

Автор: TarasBer 18.10.2010 13:17

Lapp, а может проще вводить не число, а строку?

Автор: Lapp 18.10.2010 13:52

Цитата(TarasBer @ 18.10.2010 10:17) *
Lapp, а может проще вводить не число, а строку?
Насчет проще не знаю (чего тут сложного то?? деление что ли?), но лучше безусловно, поскольку числа имеют ограниченный диапазон. Но тогда нужна проверка на то, что строка представляет число (я не говорю, что она сложна). Я просто сделал, что просили..