Page 1 sur 1

[R] Coquille dans la doc de la fonction _ArrayMaxIndex()

Posté : mer. 08 déc. 2021 11:01
par jpascal
Bonjour,

J'ai testé la fonction _ArrayMaxIndex().
Le résultat de l'exemple est erroné lors de l'utilisation avec un tableau à deux dimensions. On obtient toujours 0.
#include <Array.au3>
#include <MsgBoxConstants.au3>

Local $aArray[4][4]
For $i = 0 To 3
    For $j = 0 To 3
        $aArray[$i][$j] = Random(0, 99, 1)
    Next
Next
_ArrayDisplay($aArray, "2D Array")
MsgBox($MB_SYSTEMMODAL, 'Max Index Numeric value in column 2', _ArrayMaxIndex($aArray, 1, 0, 0, 2))

Comme indiqué dans la doc, ce n'est pas 0 mais -1 qu'il faut utiliser comme valeur de paramètre $iStart et $iEnd. Pour $iStart, logiquement 0 fonctionne aussi.
Cela porte à confusion car pour la fonction _ArraySearch(), c'est bien 0 que l'on utilise.

Re: [..] Coquille dans la doc de la fonction _ArrayMaxIndex()

Posté : mer. 08 déc. 2021 19:30
par mikell
Il n'est pas erroné, mais plutôt mal fichu et pas du tout représentatif :mrgreen:
Quand $iStart = 0 et $iEnd = 0 c'est normal que l'index retourné soit 0 vu que 0 n'est pas la valeur par défaut et que les index sont 0-based (contrairement au traitement pour les arrays 1D)

Re: [..] Coquille dans la doc de la fonction _ArrayMaxIndex()

Posté : mer. 15 déc. 2021 11:48
par TommyDDR
Le problème vient plutôt de _ArraySearch
Il est impossible de lancer une recherche uniquement sur la case 0 du tableau :
   ; Bounds checking
   If $bRow Then
      If UBound($aArray, $UBOUND_DIMENSIONS) = 1 Then Return SetError(5, 0, -1)
      If $iEnd < 1 Or $iEnd > $iDim_2 Then $iEnd = $iDim_2
      If $iStart < 0 Then $iStart = 0
      If $iStart > $iEnd Then Return SetError(4, 0, -1)
   Else
      If $iEnd < 1 Or $iEnd > $iDim_1 Then $iEnd = $iDim_1
      If $iStart < 0 Then $iStart = 0
      If $iStart > $iEnd Then Return SetError(4, 0, -1)
   EndIf
Si iEnd est = à 0 alors on cherche dans tout le tableau

Re: [..] Coquille dans la doc de la fonction _ArrayMaxIndex()

Posté : mer. 15 déc. 2021 12:38
par jchd

Re: [..] Coquille dans la doc de la fonction _ArrayMaxIndex()

Posté : mar. 21 déc. 2021 13:37
par jpascal
Merci à jchd pour le lien et merci à TommyDDR pour avoir posé la question sur le forum US. :-)