复杂的二维数组怎么转化成一维数组
c语言中多维数组a=[,,],要取出这个数组中第一维的数据可以表示成a=,a=那么autoit中怎么表示,以下是本人写的一个函数,是个二维数组,要取出第一维的数据怎么表示呢?请指教。
Func sange($m)
Local $i1,$i2,$i3,$num1,$num2,$num3,$k=0
For $i1 = 0 To $m Step 1
$num1 = $haomay[$i1]
For $i2 = 1 To $m Step 1
If $i2 > $i1 Then
$num2 = $haomay[$i2]
For $i3 = 2 To $m Step 1
If $i3 > $i2 Then
$num3 = $haomay[$i3]
ReDim $array[$k+1]
$array[$k]=$num1
$array[$k]=$num2
$array[$k]=$num3
$k=$k+1
EndIf
Next
EndIf
Next
Next
Return $array
EndFunc http://www.autoitx.com/thread-28506-1-1.html 回复 2# netegg
里面没有啊,讲的简单一点就是,a[$k] ,$k变量可能很大,现在要把第一维里面的元素放在另外一个一维数组里面,即b.但是$k是个很大的变量,如果是100,那就要定义100($k)个一维数组,这个很麻烦,有没有什么方法,类似于c语言a[$k],a,a…… 本帖最后由 netegg 于 2012-10-16 20:09 编辑
回复 3# sanye000001
怎么没有,不就是取行吗
_Array2DGetRow 回复 4# netegg
问题不是那么简单的,取行方法就多了,关键是取行之后,有很多数据要进行整合。 本帖最后由 netegg 于 2012-10-16 20:17 编辑
回复 5# sanye000001
我只看标题和描述回答问题 回复 6# netegg
哦,那麻烦你再看看,这个问题困扰着我 本帖最后由 netegg 于 2012-10-16 20:32 编辑
#include<array.au3>
Local $aA=[,,]
For $i = 0 To UBound($aA, 1)-1
$aB = _array2dgetrow($aA, $i)
_ArrayDisplay($aB)
next
Func _Array2DGetRow(ByRef $avArray, $row)
Local $rowstring = ''
For $j = 0 To UBound($avArray, 2) - 1
If $avArray[$row][$j] Then $rowstring &= '|' & $avArray[$row][$j]
Next
Return StringSplit(StringTrimLeft($rowstring, 1), '|', 2)
EndFunc ;==>_Array2DGetRow
要整合的话,根据具体情况再弄 回复 8# netegg #include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <array.au3>
Global Const $haoma =
Dim $haomax,$haomay,$array ;$haomax定义复选框
Local $i, $a = 50, $b = 80, $j,$x1,$x2,$y1,$y2,$suoyin,$z ;$a\$b表示界面上的距离 $i\$j定义复选框文本以及字体大小,$x/$x1\y1\y2表示输入的组数的值,$suoyin表示被选择的数组最后一个数值的下标,$z无意义
$anzhuang = GUICreate("彩票幸运分 QQ:1375030119", 800, 600)
Func duqu() ;读取被选择的元素$haomay
Dim $haomay
Local $xx,$yy=0
For $xx=0 To 32 Step 1
If GUICtrlRead($haomax[$xx]) == $gui_checked Then
ReDim $haomay[$yy+1]
$haomay[$yy] = GUICtrlRead($haomax[$xx], 1)
$yy = $yy + 1
EndIf
Next
Return $haomay
EndFunc
Func sange($m)
Local $i1,$i2,$i3,$num1,$num2,$num3,$k=0
For $i1 = 0 To $m Step 1
$num1 = $haomay[$i1]
For $i2 = 1 To $m Step 1
If $i2 > $i1 Then
$num2 = $haomay[$i2]
For $i3 = 2 To $m Step 1
If $i3 > $i2 Then
$num3 = $haomay[$i3]
ReDim $array[$k+1]
$array[$k]=$num1
$array[$k]=$num2
$array[$k]=$num3
$k=$k+1
EndIf
Next
EndIf
Next
Next
Return $array
EndFunc
Func _Array2DGetRow(ByRef $avArray, $row)
Local $rowstring = ''
For $j = 0 To UBound($avArray, 2) - 1
If $avArray[$row][$j] Then $rowstring &= '|' & $avArray[$row][$j]
Next
Return StringSplit(StringTrimLeft($rowstring, 1), '|', 2)
EndFunc ;==>_Array2DGetRow
$label1 = GUICtrlCreateLabel("请选择你需要的号码:", 50, 10, 200, 50)
GUICtrlSetFont($label1, 15)
GUICtrlSetColor($label1, 0xff0000)
For $i = 0 To 32 Step 1
$haomax[$i] = GUICtrlCreateCheckbox($i + 1, $a, $b, 50, 30)
$a = $a + 65
If $a > 700 Then
$a = 50
$b = $b + 100
EndIf
Next
For $j = 0 To 32 Step 1
GUICtrlSetFont($haomax[$j], 12)
Next
$label2=GUICtrlCreateLabel("输入组数",50,360,50,30)
$y1=GUICtrlCreateInput($x1,110,350,80,30)
$label3=GUICtrlCreateLabel("输入分数", 600, 360, 50, 30)
$y2=GUICtrlCreateInput($x2, 650, 350, 80, 30)
$quxiao = GUICtrlCreateButton("重新选择", 50, 540, 100, 50)
$kaishi = GUICtrlCreateButton("开始", 650, 540, 100, 50)
GUISetState(@SW_SHOW, $anzhuang)
While 1
$msg = GUIGetMsg()
If $msg = $gui_event_close Then
ExitLoop
EndIf
Select
Case $msg=$kaishi
$haomay=duqu()
$jieguo=sange(UBound($haomay)-1);得到二维数组的结果$jieguo[$k]
_Array2DGetRow($jieguo,UBound($jieguo))
EndSelect
WEnd
GUIDelete($anzhuang)麻烦你看一下这段代码 看不太懂了 看不太懂了 我要得到$k转化后的所有一维数组,当然可以写一个for语句,不过怎么定义一维数组呢?难道要手动定义$k个一维数组? 回复 11# netegg
你复制代码运行一下就明白了 不对了,你想怎么定义一维数组 回复 14# netegg
我要把所有的二维数组分解成一维数组,并且所有的一维数组赋给定义的变量数组。这样就生成$k个的一维数组,方便组合。
页:
[1]
2