ChipMaster's bwBASIC This also includes history going back to v2.10. *WARN* some binary files might have been corrupted by CRLF.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

91 lines
3.3 KiB

  1. 1 REM SORT3
  2. 5 CLS
  3. 10000 PRINT " SHELL SORT ROUTINE"
  4. 10020 PRINT
  5. 10030 PRINT "THE INPUT OF THIS PROGRAM IS A LIST OF WORDS.(OR POS NOS.).
  6. 10040 PRINT "THE OUTPUT IS THE LIST IN ALPHABETICAL (OR NUMERICAL)ORDER.
  7. 10050 PRINT "WHEN INPUTTING THE DATA DO NOT IMBED COMMAS WITHIN INPUT
  8. 10060 PRINT "WORDS OR NUMBERS OR USE NEGATIVE NUMBERS."
  9. 10070 PRINT "THE SHELL SORT IS GENERALLY MORE EFFICIENT THAN THE EASIER TO
  10. 10080 PRINT "UNDERSTAND BUBBLE SORT.
  11. 10082 PRINT " THERE IS AN OPTION TO PRINT OUT BOTH THE ORIGINAL AND THE
  12. 10084 PRINT "SORTED LISTS ON THE LINE PRINTER."
  13. 10085 PRINT
  14. 10090 INPUT "PRESS ENTER TO BEGIN";Z9
  15. 10100 CLS
  16. 10105 CLEAR 2000
  17. 10110 INPUT "WHAT IS THE MAXIMUM NUMBER OF ITEMS YOU WISH TO SORT";NM
  18. 10130 DIM A$(NM)
  19. 10140 PRINT :INPUT "DO YOU WANT OUTPUT TO GO TO THE LINE PRINTER(Y/N)";Z2$
  20. 10145 IF Z2$<>"Y" AND Z2$<>"N" THEN PRINT "INPUT ERROR":GOTO 10140
  21. 10150 INPUT "PRESS 1 FOR ALPHABETIC DATA, 2 FOR NUMERIC DATA";AN
  22. 10160 IF AN=1 OR AN = 2 THEN GOTO 10200
  23. 10170 PRINT "INPUT ERROR. TRY AGAIN."
  24. 10180 FOR I= 1 TO 300:NEXT I
  25. 10190 GOTO 10150
  26. 10200 GOSUB 10500 :REM INPUT SUBROUTINE
  27. 10210 GOSUB 10600 :REM PRINT ORIGINAL LIST
  28. 10220 GOSUB 10700 :REM SORTING SUBROUTINE
  29. 10230 GOSUB 10800 :REM PRINT SORTED LIST
  30. 10250 END
  31. 10500 REM INPUT SUBROUTINE
  32. 10510 I=0
  33. 10520 PRINT "INPUT ITEM";I+1;" (99999 TO END)";:INPUT A$(I+1)
  34. 10530 IF A$(I+1)="99999" THEN GOTO 10590
  35. 10540 I=I+1
  36. 10550 GOTO 10520
  37. 10590 RETURN
  38. 10600 REM PRINT ORIGINAL LIST 14 AT A TIME
  39. 10605 INPUT "TO PRINT ORIGINAL LIST PRESS ENTER";Z9
  40. 10607 IF Z2$="Y" THEN INPUT "PRESS ENTER WHEN PRINTER READY";Z9$: LPRINT TAB(15); "ORIGINAL LIST": LPRINT " "
  41. 10610 GOSUB 10900:REM PRINT HEADING
  42. 10620 FOR L=1 TO I
  43. 10630 PRINT USING Z8$;L,A$(L)
  44. 10635 IF Z2$="Y" THEN LPRINT USING Z8$;L,A$(L): GOTO 10670
  45. 10640 IF L/14 <>INT(L/14) THEN GOTO 10670
  46. 10650 INPUT "PRESS ENTER FOR MORE OF LISTING";Z9
  47. 10660 GOSUB 10900
  48. 10670 NEXT L
  49. 10680 INPUT "PRESS ENTER TO CONTINUE";Z9
  50. 10690 RETURN
  51. 10700 REM SORTING SUBROUTINE
  52. 10702 AD$="00000000000000000000"
  53. 10705 CLS:PRINT @ 320,"SORTING - SORTING - SORTING "
  54. 10706 IF AN=1 THEN GOTO 10710
  55. 10707 FOR K=1 TO I:A$(K)=AD$+A$(K):A$(K)=RIGHT$(A$(K),20):NEXT K
  56. 10710 S=I
  57. 10715 S=INT(S/2)
  58. 10720 IF S>=1 THEN GOTO 10730
  59. 10725 GOTO 10790
  60. 10730 FOR K= 1 TO S
  61. 10735 FOR L=K TO I-S STEP S
  62. 10740 J=L
  63. 10745 T$=A$(L+S)
  64. 10755 IF T$>=A$(J) THEN GOTO 10775
  65. 10760 A$(J+S)=A$(J)
  66. 10765 J=J-S
  67. 10770 IF J >= 1 THEN GOTO 10755
  68. 10775 A$(J+S)=T$
  69. 10780 NEXT L
  70. 10785 NEXT K
  71. 10788 GOTO 10715
  72. 10790 IF AN=1 THEN GOTO 10799
  73. 10792 FOR K= 1 TO I
  74. 10794 A=VAL(A$(K))
  75. 10795 A$(K)=STR$(A)
  76. 10797 NEXT K
  77. 10799 RETURN
  78. 10800 REM PRINT SORTED LIST 14 AT A TIME
  79. 10805 INPUT "TO PRINT SORTED LIST PRESS ENTER";Z9
  80. 10807 IF Z2$="Y" THEN INPUT "PRESS ENTER WHEN PRINTER READY";Z9$: LPRINT TAB(15); "SORTED LIST": LPRINT " "
  81. 10810 GOSUB 10610
  82. 10890 RETURN
  83. 10900 REM PRINT HEADING SUBROUTINE
  84. 10905 CLS
  85. 10910 Z9$ = " ITEM NUMBER ITEM VAL. "
  86. 10920 Z8$ = " #### % %
  87. 10930 PRINT Z9$
  88. 10940 IF Z2$="Y" THEN LPRINT Z9$:LPRINT " "
  89. 10950 RETURN