Order by pair comparisons: Difference between revisions
Content added Content deleted
(Order by pair comparisons en FreeBASIC) |
|||
Line 382: | Line 382: | ||
{ "red" "orange" "yellow" "green" "blue" "indigo" "violet" } |
{ "red" "orange" "yellow" "green" "blue" "indigo" "violet" } |
||
</pre> |
</pre> |
||
=={{header|FreeBASIC}}== |
|||
{{trans|Commodore BASIC}} |
|||
<lang freebasic> |
|||
Dim Shared As Byte r, n = 1 |
|||
Dim Shared As String IN1, OU1 |
|||
Dim Shared As String IN(6), OU(6) |
|||
Dim As Byte i, j, k |
|||
For i = 0 To 6 : Read IN(i) : Next i |
|||
Data "violet", "red", "green", "indigo", "blue", "yellow", "orange" |
|||
OU(0) = IN(0) |
|||
Sub PrintOrder |
|||
Print : Print "{"; |
|||
If n = 1 Then Print OU(n-1);")" : Exit Sub |
|||
For q As Byte = 0 To n-2 |
|||
Print OU(q);", "; |
|||
Next q |
|||
Print OU(n-1);"}" |
|||
End Sub |
|||
Sub InteractiveCompare |
|||
Dim As String*1 T |
|||
Print "Es "; IN1; " < "; OU1; "? (S/N) "; |
|||
Do: T = Inkey$: Loop Until T <> "" |
|||
If Instr("snSN", T) Then Print Ucase(T) |
|||
r = T = "S" |
|||
End Sub |
|||
For i = 1 To 6 |
|||
IN1 = IN(i) |
|||
For j = 0 To n-1 |
|||
OU1 = OU(j) |
|||
InteractiveCompare |
|||
If r < 0 Then |
|||
For k = n To j+1 Step -1 |
|||
OU(k) = OU(k-1) |
|||
Next k |
|||
OU(j) = IN1 |
|||
n += 1 |
|||
Exit For, For |
|||
End If |
|||
Next j |
|||
OU(n) = IN1 |
|||
n += 1 |
|||
Next i |
|||
PrintOrder |
|||
Sleep |
|||
</lang> |
|||
=={{header|Go}}== |
=={{header|Go}}== |