Data update
This commit is contained in:
parent
81fd053722
commit
52a6ef48dd
10248 changed files with 63654 additions and 6775 deletions
|
|
@ -1,11 +1,12 @@
|
|||
BEGIN # construct an R-style fivenum function #
|
||||
PR read "rows.incl.a68" PR
|
||||
PR read "sort.incl.a68" PR
|
||||
|
||||
PROC fivenum = ( []REAL array )[]REAL:
|
||||
BEGIN
|
||||
INT n = ( UPB array + 1 ) - LWB array;
|
||||
[ 1 : n ]REAL x := array[ AT 1 ];
|
||||
QUICKSORT x FROMELEMENT LWB x TOELEMENT UPB x;
|
||||
QUICKSORT x;
|
||||
REAL n4 = ( ( ( n + IF ODD n THEN 3 ELSE 2 FI ) / 2 ) / 2 ) ;
|
||||
[]REAL d = ( 1, n4, ( n + 1 ) / 2, n + 1 - n4, n );
|
||||
[ 1 : 5 ]REAL sum_array;
|
||||
|
|
|
|||
59
Task/Fivenum/XPL0/fivenum.xpl0
Normal file
59
Task/Fivenum/XPL0/fivenum.xpl0
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
include xpllib; \for Print and RlSort
|
||||
|
||||
func real OurMedian(X, Start, EndInclusive);
|
||||
real X; int Start, EndInclusive;
|
||||
int Size, M;
|
||||
[Size:= EndInclusive - Start + 1;
|
||||
if Size <= 0 then
|
||||
[Print("Array slice cannot be empty\n");
|
||||
exit 1;
|
||||
];
|
||||
M:= Start + Size/2;
|
||||
if rem(0) then return X(M);
|
||||
return (X(M-1) + X(M)) / 2.0;
|
||||
];
|
||||
|
||||
func FiveNum(X, Result, XLen);
|
||||
real X, Result; int XLen;
|
||||
int I, M, LowerEnd;
|
||||
[for I:= 0 to XLen-1 do
|
||||
[if X(I) # X(I) then
|
||||
[Print("Unable to deal with arrays containing NaN\n\n");
|
||||
return true;
|
||||
];
|
||||
];
|
||||
RlSort(X, XLen);
|
||||
Result(0):= X(0);
|
||||
Result(2):= OurMedian(X, 0, XLen-1);
|
||||
Result(4):= X(XLen-1);
|
||||
M:= XLen/2;
|
||||
LowerEnd:= if rem(0) then M else M-1;
|
||||
Result(1):= OurMedian(X, 0, LowerEnd);
|
||||
Result(3):= OurMedian(X, M, XLen-1);
|
||||
return false;
|
||||
];
|
||||
|
||||
proc Show(Result, Places);
|
||||
real Result; int Places;
|
||||
int I;
|
||||
[Format(1, Places);
|
||||
Print("[");
|
||||
for I:= 0 to 5-1 do
|
||||
[RlOut(0, Result(I));
|
||||
if I < 4 then Print(", ");
|
||||
];
|
||||
Print("]\n\n");
|
||||
];
|
||||
|
||||
real Result(5), X1, X2, X3;
|
||||
[X1:= [15.0, 6.0, 42.0, 41.0, 7.0, 36.0, 49.0, 40.0, 39.0, 47.0, 43.0];
|
||||
if not FiveNum(X1, Result, 11) then Show(Result, 1);
|
||||
X2:= [36.0, 40.0, 7.0, 39.0, 41.0, 15.0];
|
||||
if not FiveNum(X2, Result, 6) then Show(Result, 1);
|
||||
X3:= [ 0.14082834, 0.09748790, 1.73131507, 0.87636009, -1.95059594, 0.73438555,
|
||||
-0.03035726, 1.46675970, -0.74621349, -0.72588772, 0.63905160, 0.61501527,
|
||||
-0.98983780, -1.00447874, -0.62759469, 0.66206163, 1.04312009, -0.10305385,
|
||||
0.75775634, 0.32566578
|
||||
];
|
||||
if not FiveNum(X3, Result, 20) then Show(Result, 9);
|
||||
]
|
||||
Loading…
Add table
Add a link
Reference in a new issue