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 / READWORD.ALG < prev    next >
Text File  |  1984-04-29  |  2KB  |  59 lines

  1. BEGIN
  2. COMMENT THIS PROGRAM WILL SORT A VARIABLE NUMBER OF WORDS STORED ON
  3.         AN INPUT FILE.  THE PROGRAM ACCEPTS THE NAME OF THE 
  4.         FILE FROM THE CONSOLE AND OPENS THE FILE INDICATED.  IT
  5.         THEN READS THE FIRST NUMBER IN THE FILE WHICH INDICATES
  6.         HOW MANY NAMES ARE IN THE FILE. THIS NUMBER CAN CHANGE AS
  7.         THE NUMBER OF NAMES IN THE FILE CHANGES.  THE PROGRAM THEN  
  8.         READS IN THE WORDS AND STORES THEM IN AN ARRAY WHICH
  9.         IS THEN SORTED AND PRINTED! ;
  10.  
  11.  
  12. INTEGER I,N;
  13. FILE INPUT; %NAME USED BY PROGRAM TO REFER TO A FILE%
  14. STRING(15) FILENAME;%FILENAME UP TO 15 CHAR'S%
  15. WRITE("INPUT NAME OF FILE TO BE SORTED:");
  16. WRITE("USE WINPUT.INP FOR SAMPLE INPUT");
  17. READ(FILENAME);  %READS FILENAME FROM CONSOLE%  
  18. INPUT:=FILENAME; %THIS OPENS THE FILE%
  19. READ INPUT(N);% READS NUMBER OF NAMES FROM FILE INPUT%
  20. BEGIN
  21.     STRING ARRAY WORDS[1:N];%MAX WORD SIZE EQUAL 10%
  22.     FOR I:=1 STEP 1 UNTIL N DO
  23.         READ INPUT(WORDS[I]);
  24.  
  25.     BEGIN
  26.         PROCEDURE QUICKSORT;
  27.                     BEGIN
  28.             PROCEDURE SORT(L,R);
  29.              INTEGER L,R;
  30.              BEGIN
  31.                          INTEGER I,J;
  32.                STRING X,W;
  33.                I:=L; J:=R;
  34.                X:=WORDS[(L+R)/2];
  35.                            WHILE I<=J DO
  36.                   BEGIN
  37.                 WHILE WORDS[I]< X DO I:= I+1;
  38.                 WHILE X<WORDS[J] DO J:=J-1;
  39.                     IF  I<=J THEN
  40.                                 BEGIN
  41.                W:=WORDS[I]; WORDS[I]:=WORDS[J];
  42.                WORDS[J]:=W;
  43.                I:=I+1; J:=J-1;
  44.               END;
  45.             END;
  46.             IF L<J THEN SORT(L,J);
  47.             IF L<R THEN SORT(I,R);
  48.             END; %SORT%
  49.             SORT(1,N);
  50.         END; %QUICKSORT%
  51.  
  52.            % EXECUTION OF SORT BEGINS HERE %
  53.         QUICKSORT;
  54.                 FOR I:=1 STEP 1 UNTIL N DO WRITE(WORDS[I]);
  55.         END;
  56.     END;
  57. END
  58. EOF
  59.