RosettaCodeData/Task/Cumulative-standard-deviation/ANSI-BASIC/cumulative-standard-deviation.basic

38 lines
1.2 KiB
Text
Raw Permalink Normal View History

2026-04-30 12:34:36 -04:00
100 REM Cumulative standard deviation
110 DECLARE EXTERNAL SUB Init
120 DECLARE EXTERNAL SUB Add
130 DECLARE EXTERNAL FUNCTION Deviation
140 DIM TestData(1 TO 8)
150 FOR I = 1 TO 8
160 READ TestData(I)
170 NEXT I
180 DATA 2, 4, 4, 4, 5, 5, 7, 9
190 CALL Init(N, Sum, SumOfSquares)
200 PRINT "N ITEM AVG STDDEV"
210 FOR I = LBOUND(TestData) TO UBOUND(TestData)
220 CALL Add(N, Sum, SumOfSquares, TestData(I))
230 PRINT USING "# ": I;
240 PRINT USING " # ": TestData(I);
250 PRINT USING "#.### ": Sum / I;
260 PRINT USING " #.###": Deviation(N, Sum, SumOfSquares)
270 NEXT I
280 END
290 !
300 EXTERNAL SUB Init(N, Sum, SumOfSquares)
310 REM The parameters N, Sum, SumOfSquares are passed by reference. So, the arguments must be variables.
320 LET N = 0
330 LET Sum = 0.0
340 LET SumOfSquares = 0.0
350 END SUB
360 !
370 EXTERNAL SUB Add(N, Sum, SumOfSquares, P)
380 REM The parameters N, Sum, SumOfSquares are passed by reference. So, the arguments must be variables.
390 LET N = N + 1
400 LET Sum = Sum + P
410 LET SumOfSquares = SumOfSquares + P ^ 2
420 END SUB
430 !
440 EXTERNAL FUNCTION Deviation (N, Sum, SumOfSquares)
450 LET Deviation = SQR(SumOfSquares / N - (Sum / N) ^ 2)
460 END FUNCTION