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