Question tte bete sur les tableaux et les boucles for

Résolu
Signaler
Messages postés
32
Date d'inscription
jeudi 20 janvier 2005
Statut
Membre
Dernière intervention
11 juin 2007
-
Messages postés
1203
Date d'inscription
lundi 10 mars 2003
Statut
Membre
Dernière intervention
23 juillet 2009
-
Bonjour à tous !

Donc voilà... Je fais un tableau en 2D avec ca :
var Tab:Array = new Array[3][32]
Logiquement, ca devrait être un tableau avec 3 colonnes et 32 lignes... ok.

Mais voilà :
Question 1 : il fait 3 colonnes... mais pour parcourir la première, je fais quoi ?
Tab[1] ou Tab[0] ?
Question 2 : une boucle "for" définit comme ca :
for(i;i< =3;i++)
Pour parcourrir mon tableau... elle va aller de 0 à 3 (ce qui ferait 4 valeurs distonctes) ou de 1 à 3 ?
Est-il possible de la définir comme tel : for (i=1;i<=3;i++) ou pas ?

En gros : pour parcourrir correctement mon tableau, je dois faire comment, un boucle qui va de 0 à 2, de 1 à 3 ? Car je suis un peu perdu...

De plus je ne peux pas tester mon appli dans l'immédiat car elle est trop incomplète...

Cette question est assez urgente car, bien que tout ca soit dans des fonctions et donc très facilement retrouvable et modifiable, je ne veux pas perdre trop de temps, et passez à autre chose tant que ce n'est pas terminé....

Merci de votre aide !

10 réponses

Messages postés
275
Date d'inscription
samedi 19 novembre 2005
Statut
Membre
Dernière intervention
27 avril 2010
1
Bonjour
new Array[3][32] t'est pas obligé de te faire suer les tailles sont dynamiques en flash !
Réponse 1 c'est de la prog donc par 0
Ta boucle est juste mais par contre tu pourrais utiliser l'attribut length
Messages postés
1203
Date d'inscription
lundi 10 mars 2003
Statut
Membre
Dernière intervention
23 juillet 2009
2
Bonjour,

pour faire un tableau de 3 'colonnes' et 32 'lignes'

var Tab:Array = new Array(new Array(3),new Array(32))

Q1 : le premier index d'un array est 0
Q2: parcourir les colonnes du tableau
for(var i:Number =0; i<Tab[0].length ; i++)

enfin, petit exemple pour bien comprendre, comment cibler chaque élément du tableau à 2 dimensions :

for(var colonne:Number=0; colonne<Tab[0].length ;colonne++){
   for(var ligne:Number=0; ligne<Tab[1].length ;ligne++){
      trace('Colonne '+colonne+' Ligne '+ligne+' valeur:'+Tab[colonne][ligne])
   }
}

@+
Messages postés
32
Date d'inscription
jeudi 20 janvier 2005
Statut
Membre
Dernière intervention
11 juin 2007
1
Wow... Merci pour ta réponse, mais tu peux êt replus précis please ?

Les tailles sont dynamiques... oui, avec un flush, je crois ?

Pour la boucle, je suis d'accord, c'est bien ce que je pensais... C'est logique.

Mais pour le tableau, si je déclare mon tableau comme ça, utilisant Tab[3][32], je vais être à l'intersection de la 3ème colonne et de la 32ème ligne, ou de la 4ème colonne et de la 33ème ligne ?

 
Messages postés
32
Date d'inscription
jeudi 20 janvier 2005
Statut
Membre
Dernière intervention
11 juin 2007
1
Yop... Girou, tu as répondu pendant que je postais... désolé...

Du coup, tu as répondu plus ou moins à ma question...
Si je fais Tab[3][32] je vais être à la cellule qui se trouve à l'intersection de la 4ème colone et de la 33ème ligne...
Vrai ?
 
Messages postés
1203
Date d'inscription
lundi 10 mars 2003
Statut
Membre
Dernière intervention
23 juillet 2009
2
Tab[3][32]
je vais être à la cellule qui se trouve à l'intersection de la 4ème colone et de la 33ème ligne




Yep, tout a fait !

@+
Messages postés
32
Date d'inscription
jeudi 20 janvier 2005
Statut
Membre
Dernière intervention
11 juin 2007
1
Ok d'acc !
Ben merci à tous les deux pour vos réponses !

Dernière question : ce tableau est initialisé (nécessaire) par une première fonction, puis les valeurs y sont ajoutées par une seconde. Une troisième fonction servira à piocher des valeurs dedans.
Mais pour y accéder, à ce tableau, dans mes fonctions, en sachant que le tableau est déclaré au tout début du script...
Je dois obligatoirement le passer en paramètre puis le faire retourner par mes fonctions, où le fait de l'avoir déclaré au début du script me permet de ne pas avoir à le faire passer en paramètre ?
 
Messages postés
1203
Date d'inscription
lundi 10 mars 2003
Statut
Membre
Dernière intervention
23 juillet 2009
2
Normalement si tu le déclares au début du script, tu peux l'utiliser dans tes fonctions sans le passer en parametre

@+
Messages postés
32
Date d'inscription
jeudi 20 janvier 2005
Statut
Membre
Dernière intervention
11 juin 2007
1
Merci !

Mais j'ai un autreproblème : quand je clique sur un bouton de test, j'initialise mon tableau comme ça, avec une fonction :
function TabInit():void{
   for(var i;i<=2;i++){
      for(var j;j<=31;j++){
         Tab[i][j] = 0;
      }
   }
}
Puis je veux faire un trace de la valeur suivante :
trace(Tab[1][1]);
Lors du trace, j'ai l'erreur suivante :
TypeError: Error #1009: Cannot access a property or method of a null object reference.
 at contralco1_fla::MainTimeline/FonctionTest()

A savoir que j'ai modifié la manière de déclaration du tableau à cause de l'erreur 1010... que je ne connais plus mais qui veut dire à peu près la même chose que celle d'en dessus...
Je déclare mon tableau comme ca :
var Tab:Array;

Voilà... j'espère que vous pourrez m'aider...

 
Messages postés
32
Date d'inscription
jeudi 20 janvier 2005
Statut
Membre
Dernière intervention
11 juin 2007
1
Car ma fonction d'initialisation n'est pas appelée... et je sais pas pourquoi...
Déjà, j'ai l'erreur en moins ar j'ai mal déclaré mon tableau, donc c'est bon.
J'ai rajouté des "trace" dans ma fonction d'initialisation, et je n'ai rien qui en ressort...

 
Messages postés
1203
Date d'inscription
lundi 10 mars 2003
Statut
Membre
Dernière intervention
23 juillet 2009
2
Salut,

essaye en déclarant ton tableau comme ceci :

var Tab:Array=new Array();

@+