2010年1月14日 星期四

第一次儲備選手選拔試卷第一題

找出最小數字:從指定目錄中的"in.txt",讀入一數字字串,以逗號分隔,找出字串中最小字數。
輸出到指定目錄的"out.txt"。
(讀取指定目錄的in.txt, 請用 open app.path & "\in.txt" for input as #1 )
※今後皆以指定目錄形式完成VB

輸入範例:
26,56,78,99,15,13

輸出範例:
13

12 則留言:

  1. 熊掌:
    因為是第一題,示範如下:

    Private Sub Form_Activate()
    Open App.Path & "\in.txt" For Input As #1
    Input #1, x
    Min = x
    Do While Not EOF(1)
    Input #1, x
    If x < Min Then Min = x
    Loop
    Close #1
    Open App.Path & "\out.txt" For Output As #2
    Print #2, Min
    Close #2
    End Sub

    回覆刪除
  2. 熊掌:
    eof(1)是檢查開啟為1號的檔案,是不是到了檔案結束的地方了(end of file)。
    app.path這個目錄到底指的是那裡呢?
    指的就是程式存放的目錄,這個程式寫完存檔後,那個存檔的目錄。
    輸入資料來源是從檔案,所以,要執行前要先去和程式相同的資料匣中建立"in.txt"這個檔,內容如「輸入範例」。
    注意程式中不以表單設計為主,所以將這個程式寫在form_activate()中,表示是一啟動表單,就會自動執行。

    回覆刪除
  3. Private Sub Form_Load()
    min% = 99
    Open App.Path & "\in.txt" For Input As #1
    Do While Not EOF(1)
    Input #1, ans
    If ans < min Then
    min% = ans
    End If
    Loop
    Close #1
    Open App.Path & "\out.txt" For Output As #1
    Print #1, min%
    Close #1
    End Sub

    回覆刪除
  4. Private Sub Form_Activate()
    Open App.Path & "\in.txt" For Input As #1
    Input #1, y
    xMin = y
    While Not EOF(1)
    Input #1, x

    If x < xMin Then xMin = x
    Wend
    Close #1

    Open App.Path & "\out.txt" For Output As #2
    Print #2, xMin
    Close #2
    End Sub

    回覆刪除
  5. Y揚好,
    If ans < min Then
    還是統一寫寫min%好。
    皓好,
    練習OK.

    回覆刪除
  6. 阿揚那樣有瑕疵吧
    如果輸入的數全都大於99
    那你這題就爆了
    應該是從 in.txt裡面的數開始選

    Open App.Path & "\in.txt" For Input As #1
    Input #1, x
    min1 = x
    Do While Not EOF(1)
    Input #1, y
    If y < min1 Then min1 = y
    Loop
    Close #1

    Open App.Path & "\out.txt" For Output As #2
    Print #2, min1
    Close #2

    跟示範一樣了ORZ

    回覆刪除
  7. 松鼠好,
    這個名字好,歡迎你,並為你加油,堅持下去哦。
    你的意見是對的,找得出來這樣的「邊界」的問題是很難的,很好。
    熊掌

    回覆刪除
  8. 松鼠好,
    >跟示範一樣了orz
    這個沒關係的,一回生,二回熟,就算是一樣的,只要不是用剪貼的,而是自己有打一遍進去vb,試試看,就是學起來了。
    累積多了,就是實力了。
    這個寒假,是考驗恆心、耐心、和對vb的熱心哦,期待呢。

    回覆刪除
  9. Public Sub Form_Load()
    Me.Hide
    Open App.Path & "/in.txt" For Input As #1
    Open App.Path & "/out.txt" For Output As #2
    Line Input #1, step
    s = Split(step, ",")
    Min = s(0)
    For i = 1 To UBound(s)
    If Min > s(i) Then Min = s(i)
    Next i
    Print #2, Min
    Close #2
    Close #1
    End
    End Sub

    1分50秒

    回覆刪除
  10. Private Sub Form_Load()
    Dim n, m As Integer
    Open App.Path & "\in.txt" For Input As #1

    Input #1, m

    Do Until EOF(1)
    Input #1, n
    If m > n Then m = n
    Loop

    Close #1

    Open App.Path & "\out.txt" For Output As #2
    Print #2, m
    Close #2

    End Sub

    我是新成員^^
    請多指教
    來自資二1~:D

    回覆刪除
  11. 佑好,
    1.先歡迎你。
    2.就開始累積題目與實力吧。細節我們下次社課再說。
    3.反正就是先看到能做的題目,就用心做吧。這兩個星期,做個4題吧。然後,寒假,一星期5題吧。
    4.這題ok, 因為太簡單了,變數就算了。但是,如果能養成有些意義的變數命名,會走得更長久哦。
    熊掌

    回覆刪除
  12. Private Sub Form_Load()
    Me.Hide
    Open App.Path & "\out.txt" For Output As #2
    Open App.Path & "\in.txt" For Input As #1
    Input #1, x

    Do While Not EOF(1)

    Input #1, y
    If x > y Then x = y

    Loop
    Print #2, x

    Close #1
    Close #2

    End
    End Sub

    回覆刪除