2012年4月11日 星期三

電費系統

假設你身為一個台電工程師,你正要為 GOGO 百貨的電梯設計一套電費計算系統,來計算GOGO 百貨的電梯每天所耗的電費是多少。已知電梯所耗的電力會和它所運作的樓層成正比,但是電梯下樓比上樓要省電。所以想請你根據下面這個規則,設計一套電費計算系統。
(1) 電梯上樓時,每經過一個樓層,要花電費 20 元。
(2) 電梯下樓時,每經過一個樓層,要花電費 10 元。
(3) 你可以假設電梯停在某一個樓層時不會耗電。
舉例來說:今天有一個電梯從2 樓到8 樓再到5 樓,則所耗的電費為:從2樓到8 樓,所耗的電費是(8-2) x 20 = 120 元。電梯從8 樓到5 樓,所耗的電費是(8-5) x 10 = 30 元。所以總共花了150 元。
輸入說明 :
輸入檔中會有多筆資料,第一行是一個整數 N(1<=50),用來表示某一天中電梯所停過的樓層數。第二行是一組以空白分隔的n 個數字,分別表示電梯先後停過的樓層。 N=0 的時候,程式結束。
輸入測資中的電梯樓層最高不會超過 101 樓。
輸出說明 :
請根據電梯上下運作的樓層,計算出在一日中電梯運作所花的電費。(為了節能減碳,每日電費最高不會超過10,000 元。)
範例輸入 :
3
2 8 5
7
2 9 7 3 4 6 1
0

範例輸出 :
150
310

4 則留言:

  1. Private Sub Form_Load()
    Me.Hide
    Open App.Path & "\in.txt" For Input As #1
    Open App.Path & "\out.txt" For Output As #2
    Do
    Input #1, n
    ans = 0
    If n = 0 Then Exit Do
    Input #1, y
    a = y
    For i = 1 To n - 1
    Input #1, x
    c = 0
    If x < a Then c = a - x: c = c * 10
    If x > a Then c = x - a: c = c * 20
    ans = ans + c
    a = x
    If ans > 10000 Then Print #2, "10000": Exit Do
    Next
    If ans < 10000 Then Print #2, ans
    Loop Until n = 0
    Close
    Close
    End
    End Sub

    回覆刪除
  2. Private Sub Form_Load()
    Me.Hide
    Open App.Path & "\in.txt" For Input As #1
    Open App.Path & "\out.txt" For Output As #2
    Dim a(50) As Integer
    Do
    Input #1, n
    If n = 0 Then Exit Do
    For i = 1 To n
    Input #1, x
    a(i) = x
    Next i

    m = 0
    c = 0
    For i = 1 To (n - 1)
    If a(i) < a(i + 1) Then
    c = (a(i + 1) - a(i)) * 20
    Else
    c = (a(i) - a(i + 1)) * 10
    End If
    m = m + c
    Next i
    Print #2, m
    Loop
    Close #2
    Close #1
    End
    End Sub

    回覆刪除
  3. Private Sub Form_Load()
    Me.Hide
    Open App.Path & "\in.txt" For Input As #1
    Open App.Path & "\out.txt" For Output As #2
    Dim x(50) As Integer
    Do
    Input #1, n
    If n = 0 Then Exit Do
    For i = 1 To n
    Input #1, a
    x(i) = a
    Next i
    ans = 0
    c = 0
    For i = 1 To n - 1
    If x(i + 1) > x(i) Then
    c = (x(i + 1) - x(i)) * 20
    Else
    c = (x(i) - x(i + 1)) * 10
    End If
    ans = ans + c
    Next i
    If ans > 10000 Then
    Print #2, 10000
    Else
    Print #2, ans
    End If
    Loop
    Close #2
    Close #1
    End
    End Sub

    回覆刪除
  4. Open App.Path & "\in.txt" For Input As #1
    Open App.Path & "\out.txt" For Output As #2
    Do While Not EOF(1)
    Input #1, n
    If Val(n) = 0 Then End
    ReDim a(Val(n))
    For i = 1 To Val(n)
    Input #1, x
    a(i) = Val(x)
    Next i
    For i = 2 To Val(n)
    If a(i) > a(i - 1) Then
    price = price + (a(i) - (a(i - 1))) * 20
    Else
    price = price + (a(i - 1) - a(i)) * 10
    End If
    Next i
    If price > 10000 Then
    Print #2, "10000"
    Else
    Print #2, price
    End If
    price = 0
    Loop
    Close #2
    Close #1
    End
    End Sub

    回覆刪除