Stem-and-leaf plot: Difference between revisions
Content added Content deleted
Drkameleon (talk | contribs) (added Arturo) |
(Added Algol 68) |
||
Line 220: | Line 220: | ||
13 | 1 2 3 9 |
13 | 1 2 3 9 |
||
14 | 1 6 |
14 | 1 6 |
||
</pre> |
|||
=={{header|ALGOL 68}}== |
|||
{{works with|ALGOL 68G|Any - tested with release 2.8.3.win32}} |
|||
{{libheader|ALGOL 68-rows}} |
|||
<syntaxhighlight lang="algol68"> |
|||
BEGIN # produce a stem and leaf plot of some numbers, leaf = last digit, # |
|||
# stem = leading digits # |
|||
PR read "rows.incl.a68" PR # include row (array) utilities # |
|||
[]INT data = ( 12, 127, 28, 42, 39, 113, 42, 18, 44, 118, 44 |
|||
, 37, 113, 124, 37, 48, 127, 36, 29, 31, 125, 139 |
|||
, 131, 115, 105, 132, 104, 123, 35, 113, 122, 42, 117 |
|||
, 119, 58, 109, 23, 105, 63, 27, 44, 105, 99, 41 |
|||
, 128, 121, 116, 125, 32, 61, 37, 127, 29, 113, 121 |
|||
, 58, 114, 126, 53, 114, 96, 25, 109, 7, 31, 141 |
|||
, 46, 13, 27, 43, 117, 116, 27, 7, 68, 40, 31 |
|||
, 115, 124, 42, 128, 52, 71, 118, 117, 38, 27, 106 |
|||
, 33, 117, 116, 111, 40, 119, 47, 105, 57, 122, 109 |
|||
, 124, 115, 43, 120, 43, 27, 27, 18, 28, 48, 125 |
|||
, 107, 114, 34, 133, 45, 120, 30, 127, 31, 116, 146 |
|||
); |
|||
# generates a stem-and-leaf plot of d, the stems and leaves are derived # |
|||
# from the elements by stem and leaf. f stem if the first stem value # |
|||
# the data is assumed to be sorted into stem then leaf order # |
|||
PROC stem and leaf plot = ( []INT d, INT f stem, PROC(INT)INT stem, leaf )VOID: |
|||
IF UPB d < LWB d THEN |
|||
print( ( "No data", newline ) ) |
|||
ELSE |
|||
# there is some data to plot # |
|||
INT curr stem := f stem; |
|||
BOOL first := TRUE; |
|||
FOR i FROM LWB d TO UPB d DO |
|||
INT this stem = stem( d[ i ] ); |
|||
INT this leaf = leaf( d[ i ] ); |
|||
IF first OR curr stem /= this stem THEN |
|||
curr stem +:= 1; |
|||
WHILE IF NOT first THEN |
|||
print( ( newline ) ) |
|||
ELSE |
|||
first := FALSE |
|||
FI; |
|||
print( ( whole( curr stem, -4 ), "|" ) ); |
|||
curr stem < this stem |
|||
DO |
|||
curr stem +:= 1 |
|||
OD |
|||
FI; |
|||
print( ( " ", whole( this leaf, 0 ) ) ) |
|||
OD |
|||
FI # stem and leaf plot # ; |
|||
# sort the data # |
|||
[ LWB data : UPB data ]INT sorted data := data; |
|||
QUICKSORT sorted data FROMELEMENT LWB sorted data TOELEMENT UPB sorted data; |
|||
# plot the data: stem = element / 10, leaf = element MOD 10 # |
|||
stem and leaf plot( sorted data, -1, ( INT n )INT: n OVER 10, ( INT n )INT: n MOD 10 ) |
|||
END |
|||
</syntaxhighlight> |
|||
{{out}} |
|||
<pre> |
|||
0| 7 7 |
|||
1| 2 3 8 8 |
|||
2| 3 5 7 7 7 7 7 7 8 8 9 9 |
|||
3| 0 1 1 1 1 2 3 4 5 6 7 7 7 8 9 |
|||
4| 0 0 1 2 2 2 2 3 3 3 4 4 4 5 6 7 8 8 |
|||
5| 2 3 7 8 8 |
|||
6| 1 3 8 |
|||
7| 1 |
|||
8| |
|||
9| 6 9 |
|||
10| 4 5 5 5 5 6 7 9 9 9 |
|||
11| 1 3 3 3 3 4 4 4 5 5 5 6 6 6 6 7 7 7 7 8 8 9 9 |
|||
12| 0 0 1 1 2 2 3 4 4 4 5 5 5 6 7 7 7 7 8 8 |
|||
13| 1 2 3 9 |
|||
14| 1 6 |
|||
</pre> |
</pre> |
||