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 >
Wrap
BASIC Source File
|
1984-04-29
|
1KB
|
48 lines
5 REM REVISED FROM THE PROGRAM, ALFABETI.BAS RECEIVED BY THE CP/MUG.
10 PRINT "ALPHABETIZE"
11 ?
15 CLEAR 2000 'THIS GIVES YOU MORE STRING SPACE. ADJUST FOR YOUR SYSTEM.
20 INPUT "MAX NUMBER OF LINES TO BE ENTERED THIS RUN (TO SET DIM )";Y
30 DIM A$(Y)
31 Z=Y 'SAVE THIS VALUE SO IT CAN BE USED NEXT TIME AROUND
40 PRINT "TYPE IN ITEMS OR LINES TO BE ALPHABETIZED. END EACH LINE OR"
41 PRINT "ITEM WITH A RETURN. A LINE CONTAINING A SINGLE @ WILL END
42 PRINT "INPUT AND GIVE YOU YOUR ALPHABETIZED LIST."
50 Y=Z 'RESETS Y TO ITS ORIGINAL VALUE BEFORE ENTERING A NEW LIST
80 FOR I=1 TO Y
90 PRINT "ITEM" I;
100 INPUT A$(I)
105 IF A$(I)="@" THEN 115
110 NEXT I
115 Y=I-1
119 ! LOOP TO ALPHABETIZE DATA
1010 M=Y
1017 ! THE SORT TECHNIQUE USED IN LINES 1000-1180 COMPARES DATA ITEMS
1018 ! IN DIMINISHING INCREMENTS. THE FIRST PASS COMPARES ITEMS N/2
1019 ! ELEMENTS APART, AND SO ON UNTIL THE INCREMENT IS EXAUSTED.
1020 M=INT(M/2)
1030 IF M=0 THEN 1190
1040 K=Y-M
1050 J=1
1060 I=J
1070 L=I+M
1090 IF A$(I)<=A$(L) THEN 1160
1100 N=N+1
1110 T$=A$(I)
1120 A$(I)=A$(L)
1130 A$(L)=T$
1140 I=I-M
1150 IF I>=1 THEN 1070
1160 J=J+1
1170 IF J>K THEN 1020
1180 GOTO 1060
1190 FOR I=1 TO Y
1200 PRINT A$(I)
1210 NEXT I
1220 PRINT
1221 PRINT
1222 PRINT
1223 INPUT "AGAIN (Y/N)";X$
1225 IF X$="Y" THEN 40
1300 END