[R] Assigner valeur a toutes les cellules d'un array

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
zarnergun
Niveau 3
Niveau 3
Messages : 46
Enregistré le : lun. 27 juin 2011 21:21
Status : Hors ligne

[R] Assigner valeur a toutes les cellules d'un array

#1

Message par zarnergun »

Bonjour, je désire actuellement réalisé un array multidimensionnels avec un nombre de lignes X et colonnes Y de valeur "0", que je dois modifier par la suite au cours des fonctions en "1".

j'ai donc créer une fonction :

Code : Tout sélectionner

Func generer_tableau($X, $Y)
    Dim $tab[$X][$Y]
    For $i = 1 To $X
               ; Modifier tout les X en "0" ou false
        For $j = 1 To $Y
               ; Modifier tout les Y en "0" ou false
        Next
    Next
EndFunc

Au final, je ne sais pas du tout comment faire pour assigner une valeur a toutes les cellules d'une même ligne.

Merci beaucoup par avance
Modifié en dernier par zarnergun le lun. 27 juin 2011 22:05, modifié 1 fois.
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 2130
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

Re: [..] Assigner valeur a toutes les cellules d'un array

#2

Message par TommyDDR »

Vous ne pouvez pas procédé ainsi, en effet, $Tableau[0][0] est différent de $Tableau[0][1], il est donc impossible d'affecter une valeur à tous les $Tableau[0].

Procédez case par case :
► Afficher le textecode
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
zarnergun
Niveau 3
Niveau 3
Messages : 46
Enregistré le : lun. 27 juin 2011 21:21
Status : Hors ligne

Re: [..] Assigner valeur a toutes les cellules d'un array

#3

Message par zarnergun »

Rectification c'est normal mes boucles ne commencent pas a 0 !!!

Merci beaucoup, cela fait trois heures que je cherches ...

Par contre je pense plutot que ce qu'il faut prendre c'est i et j des boucles ?

Code : Tout sélectionner

Func generer_tableau($X, $Y)
    Dim $tab[$X][$Y]
    For $i = 1 To $X
        For $j = 1 To $Y
            $tab[$i][$j] = 0
        Next
    Next
    Return $tab
EndFunc
Petit soucis par contre :
Que ce soit avec x et y ou i j, j’obtiens l'erreur suivante :
x.au3 (22) : ==> Array variable has incorrect number of subscripts or subscript dimension range exceeded.:
$tab[$i][$j] = 0
^ ERROR
->21:56:30 AutoIT3.exe ended.rc:1
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 2130
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

Re: [..] Assigner valeur a toutes les cellules d'un array

#4

Message par TommyDDR »

Au temps pour moi, j'ai répondu trop vite.

Un tableau de 3 cases ira de 0 a 2
$Tab[0]
$Tab[1]
$Tab[2]

Ce qui nous fait bien 3 cases.
Et oui, ce sont bien les i et j... il faut que j'aille dormir moi ^^
Bravo d'avoir trouvé tout seul ;) c'est comme ça qu'on avance le mieux.
Donc :
► Afficher le textecode
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
zarnergun
Niveau 3
Niveau 3
Messages : 46
Enregistré le : lun. 27 juin 2011 21:21
Status : Hors ligne

Re: [..] Assigner valeur a toutes les cellules d'un array

#5

Message par zarnergun »

Oui merci beaucoup, je suis un petit peu inattentif a certaines choses.

Problème résolu, (vite :) ), merci beaucoup
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Assigner valeur a toutes les cellules d'un array

#6

Message par Tlem »

En fait, il y à un piège ALC.
Lorsque vous créez un tableau $Tab[10][10], vous avez bien un tableau de 10X10, mais le premier élément est l'élément $Tab[0][0]. ^^

Donc lorsque vous faites votre boucle For, il ne faut pas aller jusqu'à 10. Vous devez vous arrêter à 9. :mrgreen:

Cela donne pour votre code :

Code : Tout sélectionner

Func generer_tableau($X, $Y)
    Dim $tab[$X][$Y]
    For $i = 1 To $X - 1
        For $j = 1 To $Y -1
            $tab[$i][$j] = 0
        Next
    Next
    Return $tab
EndFunc
Et là tout roule. ;)

Edit : Grillé lors de la rédaction du message.
Ça m'apprendra à détailler. hihihi
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é".
zarnergun
Niveau 3
Niveau 3
Messages : 46
Enregistré le : lun. 27 juin 2011 21:21
Status : Hors ligne

Re: [R] Assigner valeur a toutes les cellules d'un array

#7

Message par zarnergun »

Je vous remercie également de vous être donné du mal :)
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2284
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [R] Assigner valeur a toutes les cellules d'un array

#8

Message par jchd »

Maintenant, il n'est guère besoin d'initialiser un tableau AutoIt à 0 explicitement si l'on code en conséquence.
Par "design" AutoIt initialise toute variable (y compris les éléments d'un tableau) par des chaînes vides. Or les variables AutoIt sont des variants et une chaîne vide "vaut" zéro (est convertie en 0 par un appel interne à Number()) quand elle fait partie d'une expression numérique ou d'un membre d'une comparaison contre un autre membre numérique.

Dans ton cas, il suffira de mettre à 1 (ou toute autre valeur numérique) les éléments requis pour obtenir le même résultat que si l'ensemble des éléments avaient été initialisé à 0 explicitement.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
zarnergun
Niveau 3
Niveau 3
Messages : 46
Enregistré le : lun. 27 juin 2011 21:21
Status : Hors ligne

Re: [R] Assigner valeur a toutes les cellules d'un array

#9

Message par zarnergun »

Ah ! D'accord, bah c'est bon a savoir, c'est un peu frustrant vu le temps qu'il m'a fallut ;D
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2284
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [R] Assigner valeur a toutes les cellules d'un array

#10

Message par jchd »

Euh, tu veux dire "vu le temps qu'il t'a fallu pour m'indiquer que je perdais le mien" ?
Hélas, j'ai énormément de touches programmées sur ce clavier, mais pas toutes les réponses.
T'inquiète, je plaisante !
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
zarnergun
Niveau 3
Niveau 3
Messages : 46
Enregistré le : lun. 27 juin 2011 21:21
Status : Hors ligne

Re: [R] Assigner valeur a toutes les cellules d'un array

#11

Message par zarnergun »

:)
Le pire c'est que je me rend compte que je tournais en rond et tout alors que c’était simple comme concept mais que j'étais pas foutu de m'en sortir ^^

Je veux faire un générateur de labyrinthe, a l'heure actuelle, le déplacement, le checkage des cellules voisines et le cochage des cellules fonctionnent, mais avec quelques étrangetés (Il refuse certaines cellules et malgré les conditions strictes en fait un peu a sa tête ; Mes ordres doivent être trop faiblards :D). si je trouve pas cette nuit, demain vous allez avoir de mes nouvelles sur une autre demande :D promis après j’arrête de vous embêter :)

je vous souhaite bonne nuit malgré cette chaleur atroce, Et encore merci a tous ;)
Avatar du membre
zeshrek
Niveau 10
Niveau 10
Messages : 984
Enregistré le : mer. 17 nov. 2010 09:31
Localisation : Sur ma chaise
Status : Hors ligne

Re: [R] Assigner valeur a toutes les cellules d'un array

#12

Message par zeshrek »

jchd a écrit :Maintenant, il n'est guère besoin d'initialiser un tableau AutoIt à 0 explicitement si l'on code en conséquence.
Par "design" AutoIt initialise toute variable (y compris les éléments d'un tableau) par des chaînes vides.
oui enfin presque.
Il y a la possibilité d'utiliser redim qui permet justement de (re)dimentionner un tableau sans éffacer son contenu.
Sinon, globalement je suis d'accord avec toi quand on initialise une variable ou un tableau, son contenu est une chaine vide de valeur zero
Si vis pacem para bellum
Avatar du membre
Docteur
Niveau 2
Niveau 2
Messages : 15
Enregistré le : jeu. 23 juin 2011 10:55
Status : Hors ligne

Re: [R] Assigner valeur a toutes les cellules d'un array

#13

Message par Docteur »

une chaine vide de valeur zero
Image

Une chaîne vide a pour valeur une chaîne de caractères sans caractère.
Un zéro a pour valeur zéro.
La chaîne "0" a pour valeur une chaîne de caractères avec le caractère 0.

Cordialement,

Le docteur.
Modifié en dernier par Docteur le mar. 28 juin 2011 15:20, modifié 1 fois.
Avatar du membre
zeshrek
Niveau 10
Niveau 10
Messages : 984
Enregistré le : mer. 17 nov. 2010 09:31
Localisation : Sur ma chaise
Status : Hors ligne

Re: [R] Assigner valeur a toutes les cellules d'un array

#14

Message par zeshrek »

Non, une chaine vide de valeur zero c'est ca :

Code : Tout sélectionner

Global $toto
MsgBox(0, "Longeur de $toto", "longueur = " & StringLen($toto) & @CRLF & "ce qui en fait bien une chaine vide")
MsgBox(0, "Valeur de $toto", "Equation du premier degré :" & @CRLF & "si $toto + 1 = " & $toto + 1 & @CRLF & "Conbien vaut $toto ?")
Nous avons donc bien une chaine vide (son stringlen est bien a zero) et de valeur 0 (parceque sauf erreur de ma part, 0+1 ca fait bien 1) ce qui est bien différent d'une chaine de 1 caractere "0" (code ascii 48)

De rien.
Si vis pacem para bellum
Répondre