Размещения - Pascal ABC (250713)

Узнай цену своей работы

Формулировка задачи:

Всем привет! Помогите написать программу которая выводит размещения из n по m.

Решение задачи: «Размещения»

textual
Листинг программы
procedure vWriteLn(const a: array of Integer; n: Integer);
const k: Integer = 0;
var i: Integer;
begin
  WriteLn; Inc(k); Write(k:4,':'); for i:=0 to n-1 do Write(' ',a[i]);
end;
 
procedure Swp(var a, b: Integer);
var t: Integer;
begin
  t:=a; a:=b; b:=t;
end;
 
function Next(var a: array of Integer; n, m: Integer): Boolean;
var j, k, l, r, t: Integer;
begin
  Next:=False;
  repeat
    j:=n-1; while (j>=0) and (a[j]>=a[j+1]) do Dec(j);
    if j<0 then Exit;
    k:=n-1; while (a[j]>=a[k]) do Dec(k); Swp(a[j], a[k]);
    l:=j+1; r:=n-1;
    while l<r do begin Swp(a[l],a[r]); Inc(l); Dec(r); end;
  until j<m;
  Next:=True;
end;
 
const mn=100;
var
  n, m, i: Integer;
  a: array [0..mn-1] of Integer;
begin
  repeat Write('n m [1..',mn,']: '); ReadLn(n,m);
  until (n>0) and (n<=mn) and (n>=m);
  for i:=0 to n-1 do a[i]:=i+1;
  vWriteLn(a,m); while Next(a,n,m) do vWriteLn(a,m);
end.

Объяснение кода листинга программы

Список действий в коде:

  1. Ввод чисел n и m с клавиатуры.
  2. Проверка корректности введенных значений.
  3. Инициализация массива a значениями от 1 до n.
  4. Вывод на экран содержимого массива a, размером m.
  5. Повторяющийся блок кода, выполняющийся до тех пор, пока не будет введено корректное значение n и m.
  6. Поиск индекса минимального элемента в массиве a.
  7. Если найденный элемент больше всех остальных, то он меняется местами с последним элементом.
  8. Определение индексов трех средних элементов массива a.
  9. Если элементы в средних позициях больше или равны элементам слева и справа от них, то они меняются местами с элементами, стоящими на позициях l и r.
  10. Если элементы в средних позициях больше или равны элементам слева и справа от них, то они меняются местами с элементами, стоящими на позициях l и r.
  11. Цикл, выполняющийся до тех пор, пока не будет выполнено условие выхода из цикла.
  12. Вывод на экран содержимого массива a, размером m.
  13. Повторение действий от 4 до 12 до тех пор, пока не будет введено корректное значение n и m.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.727 из 5
Похожие ответы