Брутальный гярумегамонстр '(^-^)'
Уважаемы гуру программинга. Подскажите начинающему программисту.. где ошибка в коде.. моей программы..
Задача стояла вот такая: распечатать все 4-х значные числа, состоящие из цифр {1,2,3,4}, при условии, что цифры в числах не повторяются.
Исходя из теории дискретной математики.. это перестановки.
Итак, вот, что я набросал:
читать дальше
За помощь зарание благодарен.
Задача стояла вот такая: распечатать все 4-х значные числа, состоящие из цифр {1,2,3,4}, при условии, что цифры в числах не повторяются.
Исходя из теории дискретной математики.. это перестановки.
Итак, вот, что я набросал:
читать дальше
За помощь зарание благодарен.
var
i:integer;
P:array [1..100] of integer;
begin
for i:=1 to n do
P[i]:=i;
end;
Не разбираясь в коде пока, заметил, что эта процедура не делает вообще ничего. Переменные локальные.
if k=1 then writeln(k)
else
for i:=1 to k do perest(k-1);
if i<k then reverse(k-1);
writeln(k);
забавный код.
Если дано дано к=1, то печатаем один,
Иначе выполняем процедуру perest к раз подряд.
Если i меньше к, хотя должны быть равны, то выполняем reverse.
печатаем к (и если оно =1, то печатаем уже второй раз)
Program perestanovka;
Uses CRT;
Procedure per;
Var i, j, k, l : byte;
Begin
for i:=1 to 4 do begin
for j:=1 to 4 do begin
if j<>i then
for k:=1 to 4 do begin
if ((k<>i)and(k<>j)) then
for l:=1 to 4 do begin
if ((l<>i)and(l<>j)and(l<>k)) then writeln(i, j, k, l);
end;
end;
end;
end;
End;
BEGIN
ClrScr;
per;
ReadKey;
END.
Program test;
Var i : integer;
Procedure p;
Begin
i:=1;
WriteLn(i);
End;
BEGIN
i:=2;
p;
END.
-- программа напечатает "1"