內容 :
Daniela 在一家大醫院當護士,工作時間常變來變去。更糟的是她睡得很沉,鬧鐘很難叫醒她。
最近她收到了一個有多種鬧鈴聲的數位時鐘,希望它可以解決她的問題。由於近來較為疲累,她希望善用休息時間。她隨身帶著這個鬧鐘,只要有休息時間,她就設好該醒來的時間並試著入睡。不過當她越焦急地想睡著,她越是睡不著。
她一直苦惱地想知道如果她可以立刻睡著,在鬧鐘響以前她可以有幾分鐘的睡眠。但是她的算術不好,所以請你寫一個程式,根據現在的時間及鬧鈴的時間算出她可以睡幾分鐘。
最近她收到了一個有多種鬧鈴聲的數位時鐘,希望它可以解決她的問題。由於近來較為疲累,她希望善用休息時間。她隨身帶著這個鬧鐘,只要有休息時間,她就設好該醒來的時間並試著入睡。不過當她越焦急地想睡著,她越是睡不著。
她一直苦惱地想知道如果她可以立刻睡著,在鬧鐘響以前她可以有幾分鐘的睡眠。但是她的算術不好,所以請你寫一個程式,根據現在的時間及鬧鈴的時間算出她可以睡幾分鐘。
輸入說明 :
輸入含有多筆測資,每筆測資一行,含有四個整數 h1、m1、h2 及 m2,h1:m1代表現在的時與分,h2:m2則代表鬧鈴所設的時間 (時與分),(0≤h1≤23, 0≤m1≤59, 0≤h2≤23, 0≤m2≤59)。
最後一行含有四個以空格分開的 0,代表輸入的結束。
最後一行含有四個以空格分開的 0,代表輸入的結束。
輸出說明 :
對於每筆測資,你的程式要把 Daniela 可以睡的分鐘數單獨輸出於一行。
範例輸入 :
1 5 3 5
23 59 0 34
21 33 21 10
0 0 0 0
範例輸出 :
120
35
1417
要注意就是那個鬧鐘時間比現在時間早
回覆刪除第一次做第三個答案紙有23
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, h1, m1, h2, m2
If Not (h1 = m1 And m1 = h2 And h2 = m2 And m2 = 0) Then
If h1 = 0 Then h1 = 24
If h2 = 0 Then h2 = 24
ans = (h2 - h1) * 60 + (m2 - m1)
If ans < 0 Then ans = ans + 1440
Print #2, ans
Else
Exit Do
End If
Loop
Close #2
Close #1
End
End Sub
Dim s
回覆刪除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 While Not EOF(1)
Dim ans
Line Input #1, n
s = Split(n)
If s(0) = 0 And s(1) = 0 And s(2) = 0 And s(3) = 0 Then Exit Do
If s(2) > s(0) Then
ans = (s(2) - s(0)) * 60 + Abs(s(3) - s(1))
ElseIf s(2) = s(0) And s(3) > s(1) Then
ans = s(3) - s(1)
Else
ans = (23 - Abs(s(2) - s(0))) * 60 + 60 - Abs(s(3) - s(1))
End If
Print #2, ans
Loop
Close
Close
End
End Sub
---\
1 5 3 5
23 59 0 34
21 33 21 10
5 1 5 2
5 1 5 0
0 0 0 0
輸出:
120
35
1417
1
1439
佑、arro好,
回覆刪除兩個程式都對。
數學一點的算式:
ans = ((h2 - h1) * 60 + (m2 - m1)+1440) mod 1440
一次就解決。