Дано число n из 5 цифр. Составить все комбинации этих цифр - Pascal ABC
Формулировка задачи:
Помогите решить.
Вводим число, загоняем по элементам в массив, после в нем перебираем все комбинации цифр этого числа.
Начало что-то типа такого
Листинг программы
- var
- i,m: integer;
- a: array [1..5] of integer;
- begin
- readln(m);
- i := 0;
- while m > 0 do begin
- i := i + 1;
- a[i] := m mod 10;
- m := m div 10;
- end;
- end.
Решение задачи: «Дано число 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 различных комбинаций цифр этого числа.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д