1  REM  ****  HP BASIC PROGRAM LIBRARY  *******************************
2  REM
3  REM        STATAL:   ARITHMETIC MEAN
4  REM
5  REM        36628 REV  A   6/73
6  REM
7  REM  ****  CONTRIBUTED PROGRAM  ************************************
50  REM STATAL - COPYRIGHT 1971, POLYTECHNIC INSTITUTE OF BROOKLYN
100  REM  CHARLES M. LOSIK, BKLYN POLY, MEAN-MEDIAN-DEVIATION
110  REM  (7-66 IN FORTRAN II) ; (8-26-70 IN BASIC)
120  REM  YOU PUT YOUR NUMBERS IN DATA STATEMENTS AND
130  REM  YOU GET WHAT YOU PAY FOR.
140  PRINT " ","MEAN, MEDIAN, AND DEVIATION OF A SET OF NUMBERS."
150  PRINT 
160  PRINT " ENTER YOUR NUMBERS IN DATA STATEMENTS ON LINES"
170  PRINT " 1000 - 2000.  FOR EXAMPLE, YOU MIGHT TYPE :"
171  PRINT 
172  PRINT " ","1000 DATA  1,2,3,4  ETC. (YOUR DATA GOES HERE)"
173  PRINT 
174  PRINT " WHEN YOUR DATA HAS BEEN ENTERED,  TYPE :"
180  PRINT 
190  PRINT " ","1 GO TO 300"
200  PRINT " ","RUN"
210  PRINT 
220  PRINT " THEN RELAX WHILE THE MACHINE GRINDS OUT THE ANSWERS."
222  PRINT 
225  PRINT " IF A 'SUBSCRIPT ERROR' APPEARS, INCREASE THE SIZE OF THE"
227  PRINT " ARRAY IN LINE 295."
230  PRINT 
240  REM  A(I) ARE THE NUMBERS, S IS THEIR SUM,
250  REM  S2 IS THE SUM OF THEIR SQUARES.
260  REM 
270  PRINT " WARNING -- THE NUMBER 9999 IS USED AS AN INTERNAL DATA"
275  PRINT " VALUE.  IF THIS VALUE IS ONE OF YOUR DATA VALUES, SIMPLY"
280  PRINT " RE-TYPE LINES 999 AND 2001 WITH A COMMON DATA VALUE WHICH"
285  PRINT " YOU WILL NOT USE."
290  STOP 
295  DIM A[100]
300  PRINT 
303  PRINT " THESE ARE YOUR NUMBERS :"
305  LET I=1
310  READ E
315  LET S=0
316  LET S2=0
320  READ A[I]
330  IF E=A[I] THEN 370
340  PRINT A[I];
345  LET S=S+A[I]
347  LET S2=S2+A[I]*A[I]
350  LET I=I+1
360  GOTO 320
370  LET N=I-1
380  PRINT 
390  PRINT 
399  REM  ***** BUBBLE SORT *****
400  PRINT " THESE ARE YOUR NUMBERS (HIGHEST TO LOWEST) :"
405  FOR I=1 TO N-1
410  FOR J=I+1 TO N
420  IF A[I]>A[J] THEN 460
430  LET T=A[I]
440  LET A[I]=A[J]
450  LET A[J]=T
460  NEXT J
465  PRINT A[I];
470  NEXT I
475  PRINT A[N]
480  PRINT 
490  PRINT 
500  PRINT " NUMBER OF VALUES IS";N
510  PRINT " SUM OF THE VALUES IS";S
520  PRINT " THE MEAN VALUE IS";S/N
530  PRINT " THE MEDIAN VALUE IS";
540  IF N/2 <> INT(N/2) THEN 570
550  PRINT (A[N/2]+A[(N+2)/2])/2
560  GOTO 600
570  PRINT A[(N+1)/2]
600  PRINT " THE STANDARD DEVIATION IS";SQR(N*S2+S*S)/N
610  PRINT 
620  PRINT 
630  PRINT " FOR ANOTHER RUN, RE-ENTER DATA ON LINES"
640  PRINT " 1000 - 2000, TAKING CARE TO ELIMINATE OLD DATA"
642  PRINT " BY TYPING THOSE LINE NUMBERS WHICH YOU DO NOT USE AGAIN;"
645  PRINT " THEN TYPE 'RUN'."
650  STOP 
999  DATA 9999
2001  DATA 9999
2010  END 
