LoGiX |
|
| Hello, Ho create questa funzione che controlla se in un array (bidimensionale) č presente un elemento duplicato. Se lo trova, ritorna l'index dell'elemento (duplicato) oppure True, in base al parametro flag. (Trovate tutte le spiegazioni all'interno del codice ) Esempio: Dim $array[4][2] = [ [12,13], [14,25], [13,1], [12,13] ]Sia [n][0] che [n][1] devono essere uguali (anche come posizione) a quelli trovati la prima volta. Ecco il codice (+ esempio) CODICE #include <array.au3>
Dim $array[3][2] = [ [12,12], [12,13], [12,12] ]
MsgBox(0,"","Index: "&TwiceIn2DArray($array)&@CRLF&"@error: "&@error)
#cs Se flag = 0: ritorna True o False Se flag = 1: ritorna l'index dell'elemento trovato e @error = 0 ritorna -1 e @error = 1 Se flag non č valido: ritorna -1 e @error = 2 #ce Func TwiceIn2DArray($array,$flag = 1) Dim $array2 [1][2] Local $i
If $flag <> 0 And $flag <> 1 Then Return SetError(2, 0, -1) EndIf
$len = UBound($array)-1 For $i = 0 To $len If _ArraySearch($array2,$array[$i][0],0,0,0,0,1,0) <> -1 And _ArraySearch($array2,$array[$i][1],0,0,0,0,1,1) <> -1 Then If $flag = 0 Then Return SetError(0, 0, True) ElseIf $flag = 1 Then Return SetError(0, 0, $i) EndIf Else ReDim $array2[UBound($array2)+1][2] $array2[UBound($array2)-1][0] = $array[$i][0] $array2[UBound($array2)-1][1] = $array[$i][1] EndIf Next
If $flag = 0 Then Return False ElseIf $flag = 1 Then Return SetError(0,0,-1) EndIf
EndFunc NB: Serve l'include <array.au3> Edited by LoGiX - 5/2/2012, 02:49
|
| |