Другие языки программирования и технологии

В массиве целых чисел вывести те, у которых все цифры различны. паскаль

хотя бы идею подайте) если бы было указано, скольки "значные" числа вводятся, то решила бы. а тут не понятно
Ну, дык, и не обязательно числа вводить как числа…
… Можно вводить строки!

Тогда для Turbo Pascal ограничение будет в 255 цифр, а для PascalABC — практически «ну очень большие числа».
Jorjo Armania Medved
Jorjo Armania Medved
70 666
Лучший ответ
Всю программу писать не буду Функция, проверяющая, есть ли в числе одинаковые цифры:

function b(i:longint):boolean;
var p:integer; s:set of 0..9;
begin
s:=[]; b:=false;
repeat p:=i mod 10; if p in s then b:=true; s:=s+[p]; i:=i
div 10 until i=0;
end;
Если заранее известно, что скажем в числах не больше 5и или 3х разрядов, могу предложить такой вариант:
Раскладываем на разряды. Для этого возьмём к примеру число 4264. Предположим что мы не знаем сколько у него разрядов, но знаем что числа могут быть в пределе 0 ...99999 (5 разрядов) . При помощи конструкции case - of узнаём в каком диапазоне наше число (меньше 10 или от 10 до 100 или от 100 до 1000 и т. д. ) . Дальше раскладываем на разряды. Для этого для нашего числа делим на 1000 - получим 4:
number := 4264;
a:= number div 1000; // 1-й разряд
b:= (number - (a * 1000)) div 100; // 2-й разряд
c:= (number - (a * 1000) - (b * 100)) div 10; // 3-й разряд
d:= number - (a * 1000) - (b * 100) - (c * 10); // 4-й разряд
Ну дальше если a <> b и a <> c и a <> d и b <> c и b <> d и c <> d значит все цифры нашего числа разные.
P.S. Pascal изучал давным-давно в школе и на счёт синтаксиса не уверен. Подобное решение на мой взгляд самое очевидное за неимением какого-то определенного запаса знаний, кажется даже подобную задачу где-то в школе и реализовывал сам.

Похожие вопросы