-- adatest03.ada rob 84-01-10 -- -- comment out get -- (adaf "ostrich:[truman.ada]adatest03.ada") -- -- This problem will accept a number from 1 to 8, and produce all possible -- permutation. -- With text_io; Use text_io; procedure perma is N: integer; arry: array(1..8) of integer; procedure generate_perm(number: integer); procedure output_permutate; procedure interchange(I,N: integer); procedure permute(num: integer) is begin if num < 1 or num > 8 then PUT("Range exceeded"); else for I in 1..num loop arry(I) := I; end loop; generate_perm(num); end if; NEW_LINE; end permute; procedure generate_perm(number: integer) is begin if number = 1 then output_permutate; else for I in 1..number loop interchange(I,number); generate_perm(number-1); interchange(I,number); end loop; end if; end generate_perm; procedure interchange(I,N: integer) is temp: integer; begin temp := arry(N); arry(N) := arry(I); arry(I) := temp; end; package INT_IO is new INTEGER_IO(INTEGER); use INT_IO; procedure output_permutate is begin for I in 1..N loop PUT(arry(I)); PUT(" "); end loop; NEW_LINE; end; begin PUT("Permute how many numbers? "); -- Get(N); N := 3; NEW_LINE; permute(n); end;