51 lines
1.3 KiB
Plaintext
51 lines
1.3 KiB
Plaintext
10 READ N
|
|
20 DIM S(N),N$(N),R(N)
|
|
30 FOR I=1 TO N: READ S(I),N$(I): NEXT
|
|
40 PRINT "--- Standard ranking ---": GOSUB 100: GOSUB 400
|
|
50 PRINT "--- Modified ranking ---": GOSUB 150: GOSUB 400
|
|
60 PRINT "--- Dense ranking ---": GOSUB 200: GOSUB 400
|
|
70 PRINT "--- Ordinal ranking ---": GOSUB 250: GOSUB 400
|
|
80 PRINT "--- Fractional ranking ---": GOSUB 300: GOSUB 400
|
|
90 END
|
|
100 REM
|
|
101 REM ** Ordinal ranking **
|
|
110 R(1)=1
|
|
120 FOR I=2 TO N
|
|
130 IF S(I)=S(I-1) THEN R(I)=R(I-1) ELSE R(I)=I
|
|
140 NEXT: RETURN
|
|
150 REM
|
|
151 REM ** Modified ranking **
|
|
160 R(N)=N
|
|
170 FOR I=N-1 TO 1 STEP -1
|
|
180 IF S(I)=S(I+1) THEN R(I)=R(I+1) ELSE R(I)=I
|
|
190 NEXT: RETURN
|
|
200 REM
|
|
201 REM ** Dense ranking **
|
|
210 R(1)=1
|
|
220 FOR I=2 TO N: R(I)=R(I-1)-(S(I)<>S(I-1)): NEXT
|
|
230 RETURN
|
|
250 REM
|
|
251 REM ** Ordinal ranking **
|
|
260 FOR I=1 TO N: R(I)=I: NEXT: RETURN
|
|
300 REM
|
|
301 REM ** Fractional ranking **
|
|
310 I=1: J=2
|
|
320 IF J<=N THEN IF S(J-1)=S(J) THEN J=J+1: GOTO 320
|
|
330 FOR K=I TO J-1: R(K) = (I+J-1)/2: NEXT
|
|
340 I=J: J=J+1: IF I<=N THEN 320
|
|
350 RETURN
|
|
400 REM
|
|
401 REM ** Print the table ***
|
|
410 FOR I=1 TO N
|
|
420 PRINT USING "\ \ ##, \ \";STR$(R(I));S(I);N$(I)
|
|
430 NEXT
|
|
440 PRINT: RETURN
|
|
500 DATA 7
|
|
510 DATA 44,Solomon
|
|
520 DATA 42,Jason
|
|
530 DATA 42,Errol
|
|
540 DATA 41,Garry
|
|
550 DATA 41,Bernard
|
|
560 DATA 41,Barry
|
|
570 DATA 39,Stephen
|