home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib39b.dsk / FIELD.SORT.bas < prev    next >
BASIC Source File  |  2023-02-26  |  2KB  |  39 lines

  1. 10  REM  *************************
  2. 20  REM  * FIELD.SORT            *
  3. 30  REM  * By James T. Parr      *
  4. 40  REM  * Copyright (c) 1990    *
  5. 50  REM  * MindCraft Publ. Corp. *
  6. 60  REM  * Concord, MA 01742     *
  7. 70  REM  *************************
  8. 80  REM  **** Program Data
  9. 90  DATA  Williams,"The Green Tree",1990,Phillips,"Concord & Computers",1989,Davidson,"How To Become Very Rich",1992,Phillips,"Concord & Computers II",1991
  10. 100  DATA  Phillips,"Building Your Own Plane",1991,Peters,"Insects And You",2000,Williams,"Grass",1992,Smith,"The Green Tree",1988
  11. 110  REM  **** Variable Initialization
  12. 120  PRINT  CHR$(4)"PR#3"
  13. 130 NB = 7:MAXFIELDS = 3: DIM I%(NB,MAXFIELDS),BOOK$(NB,MAXFIELDS)
  14. 140  REM  **** Reading the data
  15. 150  FOR I = 1 TO NB: READ BOOK$(I,1),BOOK$(I,2),BOOK$(I,3): NEXT 
  16. 160  GOTO 330: REM  Start of program
  17. 170  REM  **** Display subroutine
  18. 180  FOR I = 1 TO NB
  19. 190 BOOK = I%(I,IN)
  20. 200  FOR J = 1 TO MAXFIELDS: PRINT BOOK$(BOOK,J); TAB( J *25);: NEXT : PRINT : NEXT 
  21. 210  PRINT : RETURN 
  22. 220  REM  **** Insertion Sort. Initialize and sort indexes:
  23. 230  FOR IN = 1 TO MAXFIELDS: FOR I = 1 TO NB:I%(I,IN) = I: NEXT : FOR I = 1 TO 5:S1 =  INT( RND(1) *NB +1):S2 =  INT( RND(1) *NB +1):TMP = I%(S1,IN):I%(S1,IN) = I%(S2,IN):I%(S2,IN) = TMP: NEXT : NEXT : RETURN 
  24. 240  REM  **** Sorting Routine
  25. 250  FOR MOVE = 2 TO NB:T% = I%(MOVE,IN)
  26. 260  FOR UP = MOVE -1 TO 1  STEP  -1
  27. 270  IF BOOK$(T%,FIELD) > = BOOK$(I%(UP,IN),FIELD)  THEN 300
  28. 280 I%(UP +1,IN) = I%(UP,IN)
  29. 290  NEXT UP
  30. 300 I%(UP +1,IN) = T%
  31. 310  NEXT MOVE: RETURN 
  32. 320  REM  **** Program Start
  33. 330  GOSUB 230: REM  Initialize indexes (only need to do once)
  34. 340  TEXT : HOME : PRINT "FIELD.SORT, By James T. Parr. Copyright (c) 1990": PRINT "MindCraft Publ. Corp.": PRINT : POKE 34,3:IN = 1:FIELD = 1: GOSUB 180
  35. 350  PRINT "Sort by which field (1-3, Esc to quit, Press Return to scramble):  ";
  36. 360  GET CH$: PRINT CH$;: IF CH$ =  CHR$(27)  THEN  TEXT : HOME : END 
  37. 370  IF CH$ =  CHR$(13)  THEN  GOTO 330
  38. 380 FIELD =  VAL(CH$): IF FIELD <1  OR FIELD >MAXFIELDS  THEN  PRINT  CHR$(8);: GOTO 360
  39. 390  PRINT : GOSUB 250: GOSUB 180: GOTO 350