[R] Afficher toutes les valeurs non vides d'un Array 1D ?

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
SnowedEarth
Niveau 1
Niveau 1
Messages : 7
Enregistré le : lun. 30 mai 2011 19:37
Status : Hors ligne

[R] Afficher toutes les valeurs non vides d'un Array 1D ?

#1

Message par SnowedEarth »

Bonjour,
Depuis hier soir, je travaille sur un bout de code permettant de trouver tous les diviseurs d'un nombre préalablement renseigné par l'utilisateur. Cette partie fonctionne très bien. Malheureusement, je ne sais pas comment faire afficher toutes ces valeurs à la fin de la boucle dans une seule boite de dialogue qui serait pratique (Et qui ne rame pas quand l'array est trop large), contrairement à _ArrayDisplay qui est vraiment... Moche.

Code :

Code : Tout sélectionner

[...]
#include <Array.au3>
Dim $a, $a2, $a3, $a4, $i, $i2, $a6
Local $a5[20000]
[...]
        Case $Button1   
            $a = GUICtrlRead($Input1) ; C'est dans cet input que le chiffre est renseigné
            $a2 = Number($a) 
            $a3 = $a2-Round($a)
            $a4 = Floor($a2/2)
            $i  = 1
            $i2 = 0
            $a6 = Mod($a2,$i)           ; a divisible par i ssi a6=0.
            If $a3 = 0 Then 
                Do
                    $a6 = Mod($a2,$i)
                    $i2 = $i2+1
                    If $i <= $a4 And $a6=0 Then
                        $a5[$i]=$i2
                        $i = $i + 1
                        MsgBox(1,"",$i2)
                    Else
                        $i = $i+1
                    EndIf
                Until $i > $a4 ; Jusqu'à que le nombre de répétitions de la boucle soit supérieur à E(a/2) : En gros, tant que  i€[1;E(a/2)]
                MsgBox(1,"",$a2)
                ;Fin de la boucle. C'est là qu'il faudrait afficher tous les multiples trouvés.
            Else
                MsgBox(4096,"Erreur !","La variable entrée n'est pas valide.")
            EndIf
    EndSwitch
WEnd
Si quelqu'un a un indice ou une idée, qu'il se prononce. Merci d'avance :)
Modifié en dernier par SnowedEarth le ven. 16 sept. 2011 22:50, modifié 2 fois.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..]Afficher toutes les valeurs d'un Array 1D ?

#2

Message par mikell »

SnowedEarth a écrit : comment faire afficher toutes ces valeurs à la fin de la boucle dans une seule boite de dialogue qui serait pratique (Et qui ne rame pas quand l'array est trop large), contrairement à _ArrayDisplay qui est vraiment... Moche.
Pas de souci mais alors il faudrait préciser le look désiré, qu'on aille pas malencontreusement proposer une solution esthétiquement traumatisante :mrgreen:
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
SnowedEarth
Niveau 1
Niveau 1
Messages : 7
Enregistré le : lun. 30 mai 2011 19:37
Status : Hors ligne

Re: [..]Afficher toutes les valeurs d'un Array 1D ?

#3

Message par SnowedEarth »

mikell a écrit :
SnowedEarth a écrit : comment faire afficher toutes ces valeurs à la fin de la boucle dans une seule boite de dialogue qui serait pratique (Et qui ne rame pas quand l'array est trop large), contrairement à _ArrayDisplay qui est vraiment... Moche.
Pas de souci mais alors il faudrait préciser le look désiré, qu'on aille pas malencontreusement proposer une solution esthétiquement traumatisante :mrgreen:
Erf, comment ais-je pu oublier de préciser cela... ? Merci de l'avoir signalé. :D
L'idéal serait de faire afficher ces valeurs dans une MsgBox.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..]Afficher toutes les valeurs non vides d'un Array 1D

#4

Message par mikell »

Je suis un peu perdu dans votre script, mais pour une MsgBox le mieux c'est de faire comme ça :

au début :
$texte = "Tableau de valeurs " & @CRLF
$texte &= "----------------------" & @CRLF ; <= concaténation

ensuite la boucle, avec à chaque tour :
$texte &= "la valeur à noter" & @CRLF

et en sortie de boucle :
MsgBox(0, "", $texte)
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11830
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Afficher toutes les valeurs non vides d'un Array 1D

#5

Message par Tlem »

Sinon, comme ceci, ca fonctionne aussi bien :

Code : Tout sélectionner

;Local $a = GUICtrlRead($Input1) ; C'est dans cet input que le chiffre est renseigné
Local $a = 100000

If Not IsInt(Number($a)) Then
    MsgBox(4096, "Erreur !", "La variable entrée n'est pas valide.")
    Exit
EndIf

Local $i, $Res

For $i = 1 to Floor(Number($a) / 2)
    If $i <= Floor(Number($a) / 2) And Mod(Number($a), $i) = 0 Then
        $Res &= $i & ", "
    EndIf
Next

MsgBox(32, "Résultat", StringTrimRight($Res, 2) & @TAB)
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
SnowedEarth
Niveau 1
Niveau 1
Messages : 7
Enregistré le : lun. 30 mai 2011 19:37
Status : Hors ligne

Re: [..] Afficher toutes les valeurs non vides d'un Array 1D

#6

Message par SnowedEarth »

Merci à vous deux !
Je savais pas que c'était aussi simple. Si j'avais su... :mrgreen:
Titre édité au passage.
Répondre