Дано число n из 5 цифр. Составить все комбинации этих цифр - Pascal ABC
Формулировка задачи:
Помогите решить.
Вводим число, загоняем по элементам в массив, после в нем перебираем все комбинации цифр этого числа.
Начало что-то типа такого
Решение задачи: «Дано число n из 5 цифр. Составить все комбинации этих цифр»
textual
Листинг программы
{ генерация перестановок }
const k=5; { количество цифр в числе}
var a:array[1..k] of byte;
j:integer;{кол.цифр и счетчик}
n,m,kol:integer;{число и количество перестановок}
procedure generate (l,r:integer;var k:longint);
var i,v:integer;
begin
if (l=r)and(a[1]>0) then{убираем случаи когда первый ноль}
begin
for i:=1 to n do write(a[i],' ');
writeln;
k:=k+1;
end
else
begin
for i := l to r do
begin
v:=a[l]; a[l]:=a[i]; a[i]:=v; {обмен a[i],a[l]}
generate(l+1,r,k); {вызов новой генерации}
v:=a[l]; a[l]:=a[i]; a[i]:=v; {обмен a[i],a[l]}
end;
end;
end;
var i:byte;
begin
repeat
write('Введите число из 5 разных цифр, не содержащее цифру 0 M=');
readln(m);
until(m>9999)and(m<=999999);
n:=0;
while m>0 do
begin
n:=n+1;
a[k-n+1]:=m mod 10;
m:=m div 10;
end;
generate( 1,n,kol);
writeln('kol=',kol);
end.
Объяснение кода листинга программы
Данный код на языке Pascal ABC предназначен для генерации всех возможных комбинаций цифр, составляющих заданное число. Переменные:
- k - количество цифр в числе (в данном случае 5).
- a - массив, в котором будут храниться цифры числа.
- j - счетчик количества цифр и позиций, на которых они стоят.
- n - вводимое пользователем число из 5 цифр.
- m - текущая цифра, которую мы обрабатываем.
- kol - количество перестановок, которое мы генерируем.
- i - внутренний счетчик для цикла.
- v - временная переменная для обмена цифрами.
Процесс работы программы следующий:
- Проверяем, что введенное число не содержит цифру 0. Если содержит, то пропускаем некоторые позиции при генерации перестановок.
- Генерируем все возможные перестановки цифр, начиная с позиции 1 и до n. Для каждой позиции обмениваем текущую цифру местами с цифрой, которую мы только что получили.
- После завершения генерации всех перестановок выводим количество сгенерированных перестановок.
- Выводим введенное число. Пример: Введите число из 5 разных цифр, не содержащее цифру 0 M= 9876 Выведется: kol=120 После ввода числа 9876, программа сгенерирует и выведет 120 различных комбинаций цифр этого числа.