首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

(求教)怎么找出绝对值最大的一个数

2012-03-07 
(求教各位高手)如何找出绝对值最大的一个数 3.3604.7674.5602.988.211-2.509-2.908-1.209-1.290-.953-1.24

(求教各位高手)如何找出绝对值最大的一个数

3.360           4.767           4.560           2.988             .211         -2.509         -2.908       -1.209
-1.290           -.953         -1.249         -1.998         -3.908         -3.131             .142       3.130
4.671           4.834           4.727           4.699           2.930             .644           -.776       -2.592
-2.223           -.097             .912         -1.308         -4.855         -3.859         .508             .241
.013           2.698           3.491           3.312           1.566             .575           1.137           2.116
.299         -2.998         -5.818         -4.720         -3.711         -3.405           -.726           1.288
-.414         -2.825         -3.052           -.250             .792           2.336           2.141     3.209
3.240           3.076           1.432         -1.518         -3.994           .244             .776       .142
-2.400         -2.796             .115           1.172           2.880             .571         -4
.117           5.017           6.685           6.809           2.779         -4.313         -7.274         -6.182
-3.663           -.017           1.599             .717           2.765           3.548           2.088      
我的文本数据中有几千个这样的数据,如何才能找到其中绝对值最大的一个

[解决办法]
我的天啊,这是文本数据,数与数之间总得有分隔符啊(是豆号“,”还是引号“”,还是空格)。先定义一个动态数组(Dim TextData() as long),用Open命令打开文本文件,然后将数据读入这个数组中。
1、根据数组维数,即可知道数据的个数;2、用VB提供的Max函数求最大值(用一个递归函数,一对一对地求)。
[解决办法]
一,读入文本到数组.

不过按你给出的那格式,看来不是换行回车之类的分隔符....

就先读入一个变量内,然后使用Split函数来拆分到一个数组;

二,排序.

使用任意一种排序算法把这个数组排序.

具体到算法里的比较大小过程,使用ABS()函数就可以以绝对值进行比较了.

三,输出.

总数,如BD所说,数组的最大上标减最小下标就是了(SPLIT函数返回的数组最小下标是0,因此可以直接取最大上标,Ubound函数)



绝对值最大的,直接找数组第一位或最后一位的成员(看排序是从大到小还是从小到大排的...)
[解决办法]
Dim tmp As String, txtData() As String, i As Integer
Dim MaxValue As Single

Open "test.txt " For Input As #1
Do Until EOF(1)
Line Input #1, tmp
If Trim(tmp) > " " Then
tmp = Replace(tmp, vbTab, Space(1))
Do While InStr(tmp, Space(2))
tmp = Replace(tmp, Space(2), Space(1))
Loop
txtData = Slipt(tmp, Space(1))
For i = 0 To Ubound(txtData)
If Abs(Val(txtData(i))) > Abs(MaxValue) Then MaxValue = Val(txtData(i))
Next i
End If
Loop

MsgBox MaxValue
[解决办法]
楼上正解
Dim tmp As String, txtData() As String, i As Integer
Dim MaxValue As Single

Open "test.txt " For Input As #1
Do Until EOF(1)
Line Input #1, tmp
If Trim(tmp) > " " Then
tmp = Replace(tmp, vbTab, Space(1))
Do While InStr(tmp, Space(2))
tmp = Replace(tmp, Space(2), Space(1))
Loop
txtData = Slipt(tmp, Space(1))
For i = 0 To Ubound(txtData)
If Abs(Val(txtData(i))) > Abs(MaxValue) Then MaxValue = Val(txtData(i))
Next i
End If
Loop

MsgBox MaxValue

热点排行