minterz 发表于 2009-7-7 11:45:24

{已解决} 数组求和的问题

本帖最后由 minterz 于 2009-7-7 18:48 编辑

具体问题是这样的,有一个数组,如下例

序号 名称 时间
1   aa    00:45
2   bb    00:01
3   cc   01:45
4    bb   20:41
.
.
.
n    aa    12:45

问题就是,得到这个数组后,array保存的是数组的总量
现在得到 所有名称"aa"对应的 "时间" 值的和. ..
_ArrayFindAll   函数,可以找到 所有名称"aa"对应的 "时间" 值,并另外定义到一个一维数组。

个人遇到的难点有两个:
1、如何对这个新定义的 一维数组所有的值进行求和,这个表达式应该怎么写啊。
2、如何对时间格式的数字,进行求和。

新手提问,不知道描述清楚了没有。、
希望得到大家的帮助,谢谢。。

大绯狼 发表于 2009-7-7 15:10:43

解决楼主第二个问题。。。第一个问题请自行修改。。
#include <file.au3>
Dim $aRecords
Dim $num
If Not _FileReadToArray("txt.txt", $aRecords) Then
        Exit
EndIf
For $i = 1 To $aRecords
        $aRecords[$i] = StringStripWS($aRecords[$i], 4)
        If $aRecords[$i] = "" Then ExitLoop
        $temp = StringSplit($aRecords[$i], " ")
        ReDim $num[$i + 1]
        $num = $i
        $num[$i] = $temp
Next
$secend = 0
$minite = 0
For $i = 1 To $num
        $temp = StringSplit($num[$i], ":")
        $secend += Number($temp)
        If $secend > 60 Then
                $secend -= 60
                $minite += 1
        EndIf
        $minite += Number($temp)
Next
MsgBox(0, 0, $minite & ":" & $secend)

caodongchun 发表于 2009-7-7 15:45:36

本帖最后由 caodongchun 于 2009-7-7 16:04 编辑

一小时60分,一分60秒,$resulth resultm 随你!
引用楼上的吧,之前我的句子有点长,没必要
;先模拟一个你的一维数组
Dim $array

For $x = 0 To UBound($array) - 1
        $array[$x] = Random(0, 100, 1) & ':' & Random(0, 59, 1)
Next
;正题
Dim $resulth = 0, $resultm = 0
For $x = 0 To UBound($array) - 1
        $time = StringSplit($array[$x], ':')
        $hour = Number($time)
        $min = Number($time)
    $resulth += $hour
        $resultm += $min
        If $resultm>60 Then
                $resultm=$resultm-60
                $resulth +=1
        EndIf
       
Next
MsgBox(64, '', $resulth & ':' & $resultm)

minterz 发表于 2009-7-7 18:48:11

楼上的两位代码都可以用了,只是我很不明白,这个是啥意思$resulth +=1
怎么 += 也可以运行 ..
按我的理解,应该$1= $2 + $1 才对的吧 ..
谢谢...

大绯狼 发表于 2009-7-7 22:32:12

$resulth +=1就是$resulth =$resulth +1
页: [1]
查看完整版本: {已解决} 数组求和的问题