时间 |
第1小时 |
第2小时 |
第3小时 |
第4小时 |
第5小时 |
第6小时 |
第7小时 |
|
A城温度 |
30 |
30 |
33 |
33 |
31 |
31 |
32 |
|
A城数据 |
温度 |
30 |
33 |
31 |
32 |
|||
截止时间 |
2 |
4 |
6 |
7 |
||||
B城温度 |
20 |
20 |
20 |
22 |
21 |
21 |
22 |
|
B城数据 |
温度 |
20 |
22 |
21 |
22 |
|||
持续时长 |
3 |
1 |
2 |
1 |
||||
计算结果 |
温差 |
10 |
13 |
11 |
10 |
|||
持续时长 |
2 |
1 |
1 |
3 |
(时间单位:小时,温度单位:摄氏度)
表中,A城数据有4个记录,其中第1个记录为(温度30,截止时间2),第2个记录为(温度33,截止时间4),这表明从开始到第2小时的温度都是30,此后到第4小时的温度都是33。B城数据有4个记录,其中第3个记录为(温度21,持续时长2),这表明第5、第6这2个小时的温度都是21。两城温差计算结果的第4个记录为(温差10,持续时长3),这表明第5第6、第7这3个小时的温差都是10。
Const m =1000 ‘温度数据和温差数据包含的记录数都少于1000
Dim na As Integer, nb as integer ‘A、B城数据分别有na和nb个记录
Dim ha(m)As Integer ‘ha(i)存储A城第i个记录中的温度
Dim ta(m)As Integer ‘ta(i)存储A城第i个记录中的截止时间
Dim hb(m)As Integer ‘hb(i)存储B城第i个记录中的温度
Dim tb(m)As Integer ‘tb(i)存储B城第i个记录中的持续时长
Dim h(m)As Integer ‘h(i)存储计算结果第i个记录中的温差
Dim t(m)As Integer ‘t(i)存储计算结果第i个记录中的持续时长
Private Sub Command1_ Click( )
Dim i As Integer, j As Integer
Dim p0 As Integer, p1 As Integer, diff As Integer
Dim n As Integer ‘两城温差数据的记录个数
‘读取两城数据,存入变量ma,nb及数组ha,ta,hb,tb中,代码略
For i=2 To nb
tb(i)= ‘将B城第i个记录中的持续时长转换为截止时间
Next i
i=1 : j=1
n=0
p0=0
Do While i < na And i<= nb
diff ha(i)-hb(j)
p1 = ta(i)
IfThen i =i+1
If p1 >= tb (j) Then
p1 = tb(i)
j=j+1
End if
If n = 0 Or diff <> h(n) Then
n=n+1
h(n) = diff
t(n) = pl-p0
Else
End If
p0=pl
Loop
‘输出两城温差数据,代码略
End Sub