В заданном интервале найти все числа, в записи которых отсутствуют хотя бы 2 одинаковые цифры - Free Pascal
Формулировка задачи:
На заданном числовом промежутке требуется найти все числа, в десятичной записи которых отсутствуют хотя бы две одинаковые цифры.
Решение задачи: «В заданном интервале найти все числа, в записи которых отсутствуют хотя бы 2 одинаковые цифры»
textual
Листинг программы
var s:set of byte; a,b,t:int64; k:byte; ok,ok1:boolean; begin repeat write('введите границы числового промежутка:'); readln(a,b); until a<b; ok1:=false; repeat t:=abs(a); ok:=true;s:=[]; while t>0 do begin k:=t mod 10; t:=t div 10; if k in s then begin ok:=false; break; end else include(s,k); end; if ok then begin writeln(a); ok1:=true; end; a:=a+1; until a>b; if not ok1 then writeln('Нет чисел удовлетворяющих условию'); readln; end.
Объяснение кода листинга программы
- Переменная
s
инициализируется как пустое множество (set of byte). - Пользователю предлагается ввести границы числового промежутка (переменные
a
иb
). - Пока
a
меньшеb
, выполняется следующий блок кода. - Переменная
t
инициализируется как абсолютное значениеa
. - Переменная
ok
инициализируется как true, а переменнаяs
как пустое множество. - Пока
t
больше 0, выполняется следующий блок кода. - Переменная
k
инициализируется как остаток от деленияt
на 10. t
делится на 10 и уменьшается на 10.- Если
k
уже присутствует в множествеs
, то значение переменнойok
меняется на false, и цикл прерывается. - Если
k
не присутствует в множествеs
, то оно добавляется в множествоs
. - После цикла, если значение переменной
ok
равно true, то числоa
выводится на экран, и переменнаяok1
инициализируется как true. a
увеличивается на 1, и цикл повторяется до тех пор, покаa
меньшеb
.- Если после выполнения всего цикла значение переменной
ok1
остается равным false, то выводится сообщениеНет чисел, удовлетворяющих условию
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д