Консультация № 160028
09.02.2009, 18:29
0.00 руб.
0 1 1
Дорогие эксперты помогите пожалуйста решить задачку:
дано натуральное число n, проверить будут ли все цифры числа различными!!

P.S. Я знаю что такая задача уже обсуждалась, но надо только через DIV и MOD в Паскале

Pleease!! а то из-за одной задачки до сессии не допускают...((

Обсуждение

Неизвестный
09.02.2009, 19:17
общий
это ответ
Здравствуйте, Popkova Yuliya Nikolaeva!
Программа кроме проверки печатает встречающиеся повторно цифры:
Код:

program Pascal_160028;
{ Основание системы счисления }
const
CBase=10;
{ Диапазон цифр в числе }
type
TDigits=0..CBase-1;
var
t,i:TDigits;
DigitsSet,Match:set of TDigits; { Множества присутствующих цифр
и повторно встретившихся }
N:LongInt;
begin
{ Вводим число }
Write('Enter number:');
ReadLn(N);
{ Пока есть цифры }
while N<>0 do begin
{ Берем цифру }
t:=N mod CBase;
{ Отсекаем последнюю }
N:=N div CBase;
{ Если уже встречалась }
if t in DigitsSet then Match:=Match+[t] { Добавим в повторно встретившиеся }
else DigitsSet:=DigitsSet+[t]; { Добавим в первый раз встретившиеся }
end;
{ Если нет повторно встретившихся }
if Match=[] then WriteLn('All digits are different')
else begin
{ Если есть повторы печатаем их }
Write('Not all digits are different: [');
for i := 0 to CBase-1 do
if i in Match then Write(i,',');
WriteLn(#8,']');
end;
ReadLn;
end.

В принципе печатать совпадающие цифры не требуется. Поэтому вот программа без этого.
Код:

program Pascal_160028;
{ Основание системы счисления }
const
CBase=10;
{ Диапазон цифр в числе }
type
TDigits=0..CBase-1;
var
t:TDigits;
DigitsSet:set of TDigits;
N:LongInt;
Different:Boolean;
begin
{ Вводим число }
Write('Enter number:');
ReadLn(N);
{ Пока есть цифры }
Different:=true;
while (N<>0) and Different do begin
{ Берем цифру }
t:=N mod CBase;
{ Отсекаем последнюю }
N:=N div CBase;
{ Если уже встречалась }
if t in DigitsSet then Different:=false
else DigitsSet:=DigitsSet+[t]; { Добавим в первый раз встретившиеся }
end;
{ Если нет повторно встретившихся }
if Different then WriteLn('All digits are different')
else Write('Not all digits are different');
ReadLn;
end.

Выбирайте какая Вам больше нравится.
Форма ответа