sanye000001 发表于 2012-10-16 19:23:08

复杂的二维数组怎么转化成一维数组

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

netegg 发表于 2012-10-16 19:35:43

http://www.autoitx.com/thread-28506-1-1.html

sanye000001 发表于 2012-10-16 20:01:21

回复 2# netegg


    里面没有啊,讲的简单一点就是,a[$k] ,$k变量可能很大,现在要把第一维里面的元素放在另外一个一维数组里面,即b.但是$k是个很大的变量,如果是100,那就要定义100($k)个一维数组,这个很麻烦,有没有什么方法,类似于c语言a[$k],a,a……

netegg 发表于 2012-10-16 20:08:44

本帖最后由 netegg 于 2012-10-16 20:09 编辑

回复 3# sanye000001
怎么没有,不就是取行吗
_Array2DGetRow

sanye000001 发表于 2012-10-16 20:12:46

回复 4# netegg


    问题不是那么简单的,取行方法就多了,关键是取行之后,有很多数据要进行整合。

netegg 发表于 2012-10-16 20:15:56

本帖最后由 netegg 于 2012-10-16 20:17 编辑

回复 5# sanye000001
我只看标题和描述回答问题

sanye000001 发表于 2012-10-16 20:18:04

回复 6# netegg


    哦,那麻烦你再看看,这个问题困扰着我

netegg 发表于 2012-10-16 20:29:36

本帖最后由 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
要整合的话,根据具体情况再弄

sanye000001 发表于 2012-10-16 20:43:21

回复 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)麻烦你看一下这段代码

netegg 发表于 2012-10-16 20:46:38

看不太懂了

netegg 发表于 2012-10-16 20:46:44

看不太懂了

sanye000001 发表于 2012-10-16 20:47:05

我要得到$k转化后的所有一维数组,当然可以写一个for语句,不过怎么定义一维数组呢?难道要手动定义$k个一维数组?

sanye000001 发表于 2012-10-16 20:49:15

回复 11# netegg


    你复制代码运行一下就明白了

netegg 发表于 2012-10-16 20:54:04

不对了,你想怎么定义一维数组

sanye000001 发表于 2012-10-16 23:36:06

回复 14# netegg


    我要把所有的二维数组分解成一维数组,并且所有的一维数组赋给定义的变量数组。这样就生成$k个的一维数组,方便组合。
页: [1] 2
查看完整版本: 复杂的二维数组怎么转化成一维数组