2010年9月28日 星期二

排名順序

內容 : 正體->简体 
考試成績出爐了,大家開始討論自己的分數高低
一個接著一個參與討論,新加入的那個人,想要知道自己目前排名是多少
但是太多人了,導致沒辦法一時得到他的排名
大家開始請求小光這個答案,
不過小光非常討厭排名,一點都不想幫忙
現在就交給你了
輸入說明 :
每組輸入的第一行有一個數字N(1≦N≦10,0000),
代表接下來會有N個人陸續與討論,接下來會有N行,
代表接下來陸續加入的人的成績M, (1≦M≦N)
而且每個人的成績都不會重複
輸出說明 :
對於已經知道的成績,請陸續對每個加入的輸出他的排名
範例輸入 :help
1
5
2
範例輸出 :
5

4 則留言:

  1. Dim ans As Long, x(100000) As Long
    Private Sub Form_Load()
    Me.Hide
    Open App.Path & "\in.txt" For Input As #1
    Input #1, tt
    For i = 1 To tt
    Input #1, x(i)
    Next i
    Close #1
    Open App.Path & "\out.txt" For Output As #1
    For i = 1 To tt
    ans = 1
    For j = 1 To i
    If x(i) < x(j) Then ans = ans + 1
    Next j
    Print #1, ans
    Next i
    Close #1
    End
    End Sub



    BY 小白

    回覆刪除
  2. 小白好,
    1.程式OK。
    2.不過,這樣的題目,原意是要讓程式設計者用「插入排序」的方式來解的。
    你們學過,氣泡排序,選擇排序,而插入排序尤其適合外部排序資料,可以重新寫寫這題,用插入排序的方式。

    回覆刪除
  3. Dim darr(1000) As Integer
    Private Sub Form_Load()
    Open App.Path & "\in.txt" For Input As #1
    Open App.Path & "\out.txt" For Output As #2
    Input #1, o
    For j = 1 To o
    Input #1, x
    k = k + 1
    darr(k) = x
    For i = 1 To k - 1
    If darr(i) > darr(k) Then
    st = darr(i)
    darr(i) = darr(k)
    darr(k) = st
    End If

    Next i
    Next j
    For l = 1 To 10
    Print #2, darr(l)
    Next l

    Close #1
    Close #2
    End Sub
    BY 阿揚

    回覆刪除
  4. 阿揚好,
    1.不要用o或O,i/I,l/L當變數,害死自己。
    2.你的範圍到底在那兒呢?
    10,0000? 1000?10?
    3.所以,這題是錯的吧。要多小心些。

    回覆刪除