计算出现最多的数字。在VBScript中

时间:2010-03-02 14:23:58

标签: vbscript count numbers

我用逗号分隔了这个逗号分隔文件

我唯一需要做的就是找出出现次数最多的数字

例: 817; 9; 516; 11; 817; 408; 9; 817

然后结果将是 817 我希望你明白我要做的事。

3 个答案:

答案 0 :(得分:0)

我建议使用FileSystemObjects,特别是OpenTextFile方法来读取文件,然后使用split函数根据列进行分隔。然后迭代返回的数组,并计算每个数字出现的次数。

以下代码将为您计算数组。它使用有用的Dictionary对象。

Set counts = CreateObject("Scripting.Dictionary")

For i = Lbound(arr) to Ubound(arr)
    If Not counts.Exists(arr(i)) Then
        counts.add arr(i), 1
    Else
        currCount = counts.Item(arr(i))
        counts.Item(arr(i)) = currCount + 1
    End If
Next 

nums = counts.Keys()
currMax = 0
currNum = 0

For i = Lbound(nums) to Ubound(nums)
    If counts.Item(nums(i)) > currMax Then
        currMax = counts.Item(nums(i))
        currNum = nums(i)
    End If
Next 

num = currNum ' Most often found number
max = currMax ' Number of times it was found

答案 1 :(得分:0)

我会查看文本并计算你的nubmers的数量。 之后我会重新动态一个动态数组。 - 从头到尾遍历文本,并将它们存储在数组中。

之后我会选择第一个数字,遍历数组并计算(例如在tmpcounter中)数字。 [你可以在tmphit中存储文本文件中的计数数字]

你选择第二个数字,计算一个dublicates的数量(tmpcounter2 / tmphit2)

比较两个计数器,你“保持”较高的一个,并使用lowe一个用于下一个数字

...继续,直到验证最后一个字段。

最后你知道哪个号码最常出现以及频率是多少。

我希望这可以帮到你。 这就是我编程的方式,也许有更好的方法或API。

最后你知道

答案 2 :(得分:0)

试试这个

Set objFile = CreateObject("Scripting.FileSystemObject").OpenTextFile("C:\Test.txt",1)
Set dictNumbers = CreateObject("Scripting.Dictionary")

Dim MostKey
intHighest = -1

do while NOT objFile.AtEndOfStream
    LineArray = Split(objFile.ReadLine,";")
    for i = 0 to UBound(LineArray)
        if dictNumbers.Exists(LineArray(i)) Then
            dictNumbers.Item(LineArray(i)) = dictNumbers.Item(LineArray(i)) + 1
        else
            dictNumbers.Add LineArray(i), 1
        end if
        if dictNumbers.Item(LineArray(i)) > intHighest Then
            intHeighest = dictNumbers.Item(LineArray(i))
            MostKey = LineArray(i)
        end if
    next
Loop 

MsgBox MostKey