114 lines
2.1 KiB
Plaintext
114 lines
2.1 KiB
Plaintext
Module Ranking (output$, orderlist) {
|
|
Open output$ for output as #k
|
|
Gosub getdata
|
|
Print #k, "Standard ranking:"
|
|
skip=true
|
|
rankval=1
|
|
oldrank=0
|
|
For i=1 to items
|
|
Read rank, name$
|
|
if skip then
|
|
skip=false
|
|
else.if oldrank<>rank then
|
|
rankval=i
|
|
end if
|
|
oldrank=rank
|
|
Print #k, Format$("{0::-5} {2} ({1})", rankval, rank, name$)
|
|
Next
|
|
Gosub getdata
|
|
Print #k, "Modified ranking:"
|
|
skip=true
|
|
rankval=Items
|
|
oldrank=0
|
|
ShiftBack 1, -items*2 ' reverse stack items
|
|
For i=items to 1
|
|
Read name$, rank
|
|
if skip then
|
|
skip=false
|
|
else.if oldrank<>rank then
|
|
rankval=i
|
|
end if
|
|
oldrank=rank
|
|
Data Format$("{0::-5} {2} ({1})", rankval, rank, name$)
|
|
Next
|
|
ShiftBack 1, -items ' reverse stack items
|
|
For i=1 to items
|
|
Print #k, letter$
|
|
Next i
|
|
Gosub getdata
|
|
Print #k, "Dense ranking:"
|
|
skip=true
|
|
Dense=Stack
|
|
acc=1
|
|
oldrank=0
|
|
For i=1 to items
|
|
Read rank, name$
|
|
if skip then
|
|
skip=false
|
|
oldrank=rank
|
|
else.if oldrank<>rank then
|
|
oldrank=rank
|
|
Gosub dense
|
|
acc=i
|
|
end if
|
|
Stack Dense {data Format$(" {0} ({1})",name$, rank)}
|
|
Next
|
|
Gosub dense
|
|
Gosub getdata
|
|
Print #k, "Ordinal ranking:"
|
|
For i=1 to items
|
|
Print #k, Format$("{0::-5} {2} ({1})", i, Number, letter$)
|
|
Next
|
|
Gosub getdata
|
|
Print #k, "Fractional ranking:"
|
|
skip=true
|
|
Frac=Stack
|
|
acc=1
|
|
oldrank=0
|
|
For i=1 to items
|
|
Read rank, name$
|
|
if skip then
|
|
skip=false
|
|
oldrank=rank
|
|
else.if oldrank<>rank then
|
|
oldrank=rank
|
|
Gosub Fractional
|
|
acc=I
|
|
end if
|
|
Stack Frac {data Format$(" {0} ({1})",name$, rank)}
|
|
Next
|
|
Gosub Fractional
|
|
Close #k
|
|
End
|
|
Fractional:
|
|
val=((len(Frac)+1)/2+(acc-1))
|
|
Stack Frac {
|
|
while not empty
|
|
Print #k, format$("{0:1:-5}{1}", val, letter$)
|
|
end while
|
|
}
|
|
Return
|
|
dense:
|
|
Stack Dense {
|
|
while not empty
|
|
Print #k, format$("{0::-5}{1}", acc, letter$)
|
|
end while
|
|
}
|
|
Return
|
|
getdata:
|
|
flush
|
|
stack stack(orderlist) // place a copy of items to current stack
|
|
items=stack.size/2
|
|
Return
|
|
}
|
|
Flush
|
|
Data 44, "Solomon", 42, "Jason", 42, "Errol"
|
|
Data 41, "Garry", 41, "Bernard", 41, "Barry"
|
|
Data 39, "Stephen"
|
|
// get all items from current stack to a new stack
|
|
alist=[]
|
|
// To screen
|
|
Ranking "", alist
|
|
// To file
|
|
Ranking "ranking.txt", alist
|