Размещения - 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.
Объяснение кода листинга программы
Список действий в коде:
- Ввод чисел n и m с клавиатуры.
- Проверка корректности введенных значений.
- Инициализация массива a значениями от 1 до n.
- Вывод на экран содержимого массива a, размером m.
- Повторяющийся блок кода, выполняющийся до тех пор, пока не будет введено корректное значение n и m.
- Поиск индекса минимального элемента в массиве a.
- Если найденный элемент больше всех остальных, то он меняется местами с последним элементом.
- Определение индексов трех средних элементов массива a.
- Если элементы в средних позициях больше или равны элементам слева и справа от них, то они меняются местами с элементами, стоящими на позициях l и r.
- Если элементы в средних позициях больше или равны элементам слева и справа от них, то они меняются местами с элементами, стоящими на позициях l и r.
- Цикл, выполняющийся до тех пор, пока не будет выполнено условие выхода из цикла.
- Вывод на экран содержимого массива a, размером m.
- Повторение действий от 4 до 12 до тех пор, пока не будет введено корректное значение n и m.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д