home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / SIMTEL / CPMUG / CPMUG028.ARK / SORT.ALG < prev    next >
Text File  |  1984-04-29  |  2KB  |  74 lines

  1. BEGIN
  2. COMMENT ALGOL-M PROGRAM TO SORT DECIMAL NUMBERS IN DESCENDING
  3.         ORDER :- INPUT IS FROM THE CONSOLE;
  4. INTEGER N;
  5.  
  6. PROCEDURE HEADING(N);
  7.   INTEGER N;
  8.   WRITE("DATA SET",N);
  9.  
  10. PROCEDURE DASHES(N);
  11.   INTEGER N;
  12.   BEGIN INTEGER I;
  13.     WRITE("-"); FOR I:=2 STEP 1 UNTIL N DO WRITEON("-");
  14.   END;
  15.  
  16. PROCEDURE TITLE;
  17.   BEGIN
  18.     WRITE(" ALGOL-M SORTING PROGRAM");
  19.     WRITE(" "); WRITE(" ");
  20.   END;
  21.  
  22. PROCEDURE INPUT;
  23.   BEGIN
  24.    WRITE("INPUT AN INTEGER TO INDICATE THE NUMBER OF DECIMAL");
  25.    WRITE("NUMBERS TO BE SORTED.  INPUT 9999 TO TERMINATE ");
  26.    READ(N);
  27.  END;
  28. INTEGER COUNT,K; COUNT:=0; K:=30;
  29. TITLE; INPUT;
  30.  WHILE N<>9999 DO
  31.   BEGIN
  32.     DECIMAL ARRAY SORT[1:N];
  33.  
  34.     INTEGER FUNCTION SORTER;
  35.       BEGIN INTEGER I,COUNT,SORTED;
  36.             DECIMAL T;
  37.       COUNT:=1; SORTED:=0; T:=1.0;
  38.       WHILE COUNT<>0 DO
  39.         BEGIN COUNT:=0;
  40.         FOR I:=1 STEP 1 UNTIL N-1 DO
  41.           BEGIN IF SORT[I]<SORT[I+1] THEN
  42.                   BEGIN
  43.                     COUNT:=COUNT+1;
  44.                     SORTED:=SORTED+1;
  45.                     T:=SORT[I]; SORT[I]:=SORT[I+1]; SORT[I+1]:=T;
  46.                   END;
  47.           END;
  48.         END;
  49.     SORTER:=SORTED;
  50.       END;
  51.  
  52. PROCEDURE PRINT;
  53.    BEGIN INTEGER I;
  54.      FOR I:=1 STEP 1 UNTIL N DO WRITE(I," ",SORT[I]);
  55.    END;
  56.  
  57. PROCEDURE READER;
  58.    BEGIN INTEGER I;
  59.      WRITE("INPUT DECIMAL NUMBERS");
  60.      FOR I:=1 STEP 1 UNTIL N DO READ(SORT[I]);
  61.      PRINT;
  62.    END;
  63.  
  64. DASHES(K); HEADING((COUNT:=COUNT+1)); DASHES(K);
  65. WRITE(" "); WRITE(" ");
  66. WRITE("ORIGINAL DATA ORDER"); READER;
  67. WRITE(" ");
  68. WRITE("THERE WERE", SORTER," EXCHANGES REQUIRED; RESULTING ORDER IS");
  69. PRINT; DASHES(K); WRITE(" "); INPUT;
  70. END;
  71. WRITE(" "); WRITE("END OF RUN");
  72. END
  73. EOF
  74.