The display on a 24 hour digital clock, having the format HH:MM:SS, reads 09:40:41.
What will the clock display precisely 20140 digit changes later? How about exactly 201400 digit changes later?
*** For example, the change from 09:59:59 to 10:00:00 will be construed as 6 digit changes.
DefDbl A-Z
Dim crlf$
Function mform$(x, t$)
a$ = Format$(x, t$)
If Len(a$) < Len(t$) Then a$ = Space$(Len(t$) - Len(a$)) & a$
mform$ = a$
End Function
Private Sub Form_Load()
ChDir "C:\Program Files (x86)\DevStudio\VB\projects\flooble"
Text1.Text = ""
crlf$ = Chr(13) + Chr(10)
Form1.Visible = True
DoEvents
Open "digital time check.txt" For Output As #2
h = 9: m = 40: s = 41
Do
s = s + 1
ct = ct + 1
If s Mod 10 = 0 Then ct = ct + 1
If s = 60 Then
m = m + 1
s = 0
ct = ct + 1
If m Mod 10 = 0 Then ct = ct + 1
If m = 60 Then
h = h + 1
m = 0
ct = ct + 1
If h Mod 10 = 0 Then ct = ct + 1
If h = 24 Then h = 0: ct = ct + 1: midnct = midnct + 1
End If
End If
Print #2, mform(h, " 00") & ":" & mform(m, "00") & ":" & mform(s, "00") & " " & Str(ct - prevct)
prevct = ct
If ct > 20139 And did1 = 0 Then
did1 = 1
Text1.Text = Text1.Text & ct & mform(h, " 00") & ":" & mform(m, "00") & ":" & mform(s, "00") & Str(midnct) & crlf
DoEvents
End If
If ct > 201399 And did2 = 0 Then
did2 = 1
Text1.Text = Text1.Text & ct & mform(h, " 00") & ":" & mform(m, "00") & ":" & mform(s, "00") & Str(midnct) & crlf
DoEvents
Exit Do
End If
Loop
Close
Text1.Text = Text1.Text & crlf & " done"
End Sub
finds
20140 14:40:45 0
201401 11:41:20 2
meaning that 20140 digit changes have occurred by 14:40:45, which the clock reads at the conclusion of those 20140 changes.
But also, it requires 201401 digit changes to get to 11:41:20, two days later (two midnights have past--that's what the lone 2 at the end signifies). One second before that, only 201399 digit changes had taken place at that time. If the digit changes are taking place simultaneously, then there is no time at which 201400 digit changes have taken place.
If, however, the digit changes take place sequentially, in the same order (right-to-left) that we would ordinarily add a second and do the carry to the left, then the clock would read a temporarily incorrect 11:41:10 for an instant during the transition from 11:41:19 to 11:41:20. If, however, the new digits are calculated internally, and then displayed sequentially, left-to-right, the instantaneous erroneous time woutd be 11:41:29 at the 201400-digit-change count.
Checks were done through the file produced, for correct increments of digit count:
09:40:48 1
09:40:49 1
09:40:50 2
09:40:51 1
09:40:52 1
...
09:40:58 1
09:40:59 1
09:41:00 3
09:41:01 1
09:41:02 1
...
09:49:58 1
09:49:59 1
09:50:00 4
09:50:01 1
09:50:02 1
...
10:59:58 1
10:59:59 1
11:00:00 5
11:00:01 1
11:00:02 1
...
19:59:58 1
19:59:59 1
20:00:00 6
20:00:01 1
20:00:02 1
20:00:03 1
...
23:59:58 1
23:59:59 1
00:00:00 6
00:00:01 1
00:00:02 1
00:00:03 1
|
Posted by Charlie
on 2014-09-10 12:07:42 |