Консультация № 144267
18.09.2008, 07:58
0.00 руб.
0 2 1
Дано натуральное число n (n ≤ 9999). Верно ли, что все четыре цифры числа различны?

Обсуждение

Неизвестный
18.09.2008, 09:40
общий
А нули ведущие считать за числа? То есть, если n двузначное?
Неизвестный
18.09.2008, 10:00
общий
это ответ
Здравствуйте, Николаев Денис Игоревич!
В приложении простейший (без наворотов) код, решающий Вашу задачу.
Можно сделать поинтереснее, эффективнее - через анализ цифр.
Можно перевести с помощью STR в строку и анализировать символы строки.
--
ЗЫ: здесь анализируются именно 4 цифры, даже если введено двухзначное число. Если не так нужно, то есть, нужно анализировать только введенные цифры, то напишите - переделать несложно

Приложение:
uses CRT;
const
n : Word = 1123;
var
m : Array[1..4] of Byte; {Сюда положим цифры}
i : Byte; {количество значащих}
ch: Char;
BEGIN
WriteLn(n);

repeat
for i:=1 to 4 do begin
m[i] := n mod 10;
n := n div 10;
end;
WriteLn('Верно ли, что все цифры различны?: ',
(m[1] <> m[2]) and (m[1] <> m[3]) and (m[1] <> m[4])
and (m[2] <> m[3]) and (m[2] <> m[4])
and (m[3] <> m[4]));
Write('Повторить? (Y/N)');
ch := ReadKey;
if not ((ch = 'Y') or (ch = 'y')) then Break; {Немедленный выход из цикла}
WriteLn;
Write('Введите целое число не больше 9999: ');
ReadLn(n);
if n > 9999 then begin
WriteLn('Неправильный ввод. Работа программы завершится после'+
'нажатия любой клавиши');
ReadKey;
Halt(1); {Завершение работы программы}
end;

until FALSE;
{repeat ... until FALSE; - бесконечный цикл.
Выход по Break или Halt}
END.

Форма ответа