PROGRAM PERMUTATIONEN(INPUT,OUTPUT); VAR I,N: INTEGER; C: ARRAY[1..10] OF INTEGER; FUNCTION FAK(N: INTEGER): INTEGER; BEGIN IF N=1 THEN FAK := 1 ELSE FAK := N*FAK(N-1) END (* FAK *); PROCEDURE WRITEPERMUTATION; VAR I: INTEGER; BEGIN WRITE(" ":10); FOR I := 1 TO N DO WRITE( C[I] :3); WRITELN END (* WRITEPERMUTATION *); PROCEDURE NEXTPERMUTATION; VAR I,J,H: INTEGER; BEGIN I := N+1; REPEAT I := I-1; H := C[1]; FOR J := 1 TO I-1 DO C[J] := C[J+1]; C[I] := H UNTIL C[I]<>I END (* NEXTPERMUTATION *); BEGIN WRITE("P E R M U T A T I O N E N DER ORDNUNG"); READ(N); WRITELN; FOR I := 1 TO N DO C[I] := I; WRITEPERMUTATION; FOR I := 2 TO FAK(N) DO BEGIN NEXTPERMUTATION; WRITEPERMUTATION END END.