Брутальный гярумегамонстр '(^-^)'
Уважаемы гуру программинга. Подскажите начинающему программисту.. где ошибка в коде.. моей программы..
Задача стояла вот такая: распечатать все 4-х значные числа, состоящие из цифр {1,2,3,4}, при условии, что цифры в числах не повторяются.
Исходя из теории дискретной математики.. это перестановки.
Итак, вот, что я набросал:
читать дальше

За помощь зарание благодарен.

@темы: Pascal

Комментарии
23.03.2008 в 14:39

Псих
procedure perest (n:integer);
var
i:integer;
P:array [1..100] of integer;
begin
for i:=1 to n do
P[i]:=i;
end;


Не разбираясь в коде пока, заметил, что эта процедура не делает вообще ничего. Переменные локальные.
23.03.2008 в 14:48

Псих
Обе процедуры вообще ничего не делают.

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, то печатаем уже второй раз)

23.03.2008 в 15:25

Псих
Код, по моему, не оч красивый, но подходит под поставленную задачу:

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.


23.03.2008 в 20:40

Брутальный гярумегамонстр '(^-^)'
Спасибо большое за программу, а в процедурах как исправить, чтобы переменные работали глобально.. извините .. за ламерство))
23.03.2008 в 20:58

Псих
глобальный переменный обьявляются в самой программе и до процедур. Типа:

Program test;

Var i : integer;

Procedure p;
Begin
i:=1;
WriteLn(i);
End;

BEGIN
i:=2;
p;
END.

-- программа напечатает "1"
24.03.2008 в 21:47

Брутальный гярумегамонстр '(^-^)'
а, спасибо.
24.03.2008 в 22:08

Псих
ещё задачки есть?)
25.03.2008 в 18:12

Брутальный гярумегамонстр '(^-^)'
Та нет) одна вот была)) спасибо за помощь)