55 lines
1.8 KiB
Plaintext
55 lines
1.8 KiB
Plaintext
100 PROGRAM StemAndLeafPlot
|
|
110 OPTION BASE 0
|
|
120 DIM Dat(120)
|
|
130 FOR I = 0 TO 120
|
|
140 READ Dat(I)
|
|
150 NEXT I
|
|
160 DATA 12, 127, 28, 42, 39, 113, 42, 18, 44, 118, 44, 37, 113, 124
|
|
170 DATA 37, 48, 127, 36, 29, 31, 125, 139, 131, 115, 105, 132, 104, 123
|
|
180 DATA 35, 113, 122, 42, 117, 119, 58, 109, 23, 105, 63, 27, 44, 105
|
|
190 DATA 99, 41, 128, 121, 116, 125, 32, 61, 37, 127, 29, 113, 121, 58
|
|
200 DATA 114, 126, 53, 114, 96, 25, 109, 7, 31, 141, 46, 13, 27, 43
|
|
210 DATA 117, 116, 27, 7, 68, 40, 31, 115, 124, 42, 128, 52, 71, 118
|
|
220 DATA 117, 38, 27, 106, 33, 117, 116, 111, 40, 119, 47, 105, 57, 122
|
|
230 DATA 109, 124, 115, 43, 120, 43, 27, 27, 18, 28, 48, 125, 107, 114
|
|
240 DATA 34, 133, 45, 120, 30, 127, 31, 116, 146
|
|
250 CALL LeafPlot(Dat)
|
|
260 END
|
|
270 REM ************************
|
|
1000 EXTERNAL SUB LeafPlot(A())
|
|
1010 CALL ShellSort(A)
|
|
1020 LET I = INT(A(0) / 10) - 1
|
|
1030 FOR J = 0 TO UBOUND(A)
|
|
1040 LET D = INT(A(J) / 10)
|
|
1050 DO WHILE D > I
|
|
1060 LET I = I + 1
|
|
1070 IF J <> 0 THEN PRINT
|
|
1080 PRINT USING "## |": I;
|
|
1090 LOOP
|
|
1100 PRINT USING "##": MOD(A(J), 10);
|
|
1110 NEXT J
|
|
1120 PRINT
|
|
1130 END SUB
|
|
1140 REM ************************
|
|
2000 EXTERNAL SUB ShellSort(A())
|
|
2010 LET N = UBOUND(A)
|
|
2020 LET Incr = INT(N / 2)
|
|
2030 DO WHILE Incr > 0
|
|
2040 FOR I = Incr TO N - 1
|
|
2050 LET J = I - Incr
|
|
2060 DO WHILE J >= 0
|
|
2070 IF A(J) > A(J + Incr) THEN
|
|
2080 REM SWAP A(J), A(J + Incr): J = J - Incr
|
|
2090 LET Tmp = A(J)
|
|
2100 LET A(J) = A(J + Incr)
|
|
2110 LET A(J + Incr) = Tmp
|
|
2120 LET J = J - Incr
|
|
2130 ELSE
|
|
2140 LET J = -1
|
|
2150 END IF
|
|
2160 LOOP
|
|
2170 NEXT I
|
|
2180 LET Incr = INT(Incr / 2)
|
|
2190 LOOP
|
|
2200 END SUB
|