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 / CPMUG054.ARK / ALFABET2.BAS < prev    next >
BASIC Source File  |  1984-04-29  |  1KB  |  48 lines

  1. 5 REM REVISED FROM THE PROGRAM, ALFABETI.BAS RECEIVED BY THE CP/MUG.
  2. 10 PRINT "ALPHABETIZE"
  3. 11 ?
  4. 15 CLEAR 2000 'THIS GIVES YOU MORE STRING SPACE. ADJUST FOR YOUR SYSTEM.
  5. 20 INPUT "MAX NUMBER OF LINES TO BE ENTERED THIS RUN (TO SET DIM )";Y
  6. 30 DIM A$(Y)
  7. 31 Z=Y 'SAVE THIS VALUE SO IT CAN BE USED NEXT TIME AROUND
  8. 40 PRINT "TYPE IN ITEMS OR LINES TO BE ALPHABETIZED.  END EACH LINE OR"
  9. 41 PRINT "ITEM WITH A RETURN.  A LINE CONTAINING A SINGLE @ WILL END
  10. 42 PRINT "INPUT AND GIVE YOU YOUR ALPHABETIZED LIST."
  11. 50 Y=Z 'RESETS Y TO ITS ORIGINAL VALUE BEFORE ENTERING A NEW LIST
  12. 80 FOR I=1 TO Y
  13. 90 PRINT "ITEM" I;
  14. 100 INPUT A$(I)
  15. 105 IF A$(I)="@" THEN 115
  16. 110 NEXT I
  17. 115 Y=I-1
  18. 119 !    LOOP TO ALPHABETIZE DATA
  19. 1010 M=Y
  20. 1017 !    THE SORT TECHNIQUE USED IN LINES 1000-1180 COMPARES DATA ITEMS
  21. 1018 !    IN DIMINISHING INCREMENTS. THE FIRST PASS COMPARES ITEMS N/2
  22. 1019 !    ELEMENTS APART, AND SO ON UNTIL THE INCREMENT IS EXAUSTED.
  23. 1020 M=INT(M/2)
  24. 1030 IF M=0 THEN 1190
  25. 1040 K=Y-M
  26. 1050 J=1
  27. 1060 I=J
  28. 1070 L=I+M
  29. 1090 IF A$(I)<=A$(L) THEN 1160
  30. 1100 N=N+1
  31. 1110 T$=A$(I)
  32. 1120 A$(I)=A$(L)
  33. 1130 A$(L)=T$
  34. 1140 I=I-M
  35. 1150 IF I>=1 THEN 1070
  36. 1160 J=J+1
  37. 1170 IF J>K THEN 1020
  38. 1180 GOTO 1060
  39. 1190 FOR I=1 TO Y
  40. 1200 PRINT A$(I)
  41. 1210 NEXT I
  42. 1220 PRINT
  43. 1221 PRINT
  44. 1222 PRINT
  45. 1223 INPUT "AGAIN (Y/N)";X$
  46. 1225 IF X$="Y" THEN 40
  47. 1300 END
  48.