Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Un petit soucy avec les Arrays... (still nioubi)

3 réponses
Avatar
Jean-Louis Crouzet
Bonjour,

pb creer un tableau a deux dimmentions, avec sur la diagonale des 1 et
le reste avec des zeros...

Bon jusque là,tout va bien. Je collecte mettons 3 colonnes et 3 lignes
commes paramètres. Et je m'essaie.

A noter que je comprends bien que la notion multi-dimentionnelle des
Arrays en js n'est pas et qu'elle se fait par une array d'array.

Voici mon code et le log qu'il produit...je n'y arrive pas ! Merci de
vos éclairages avisés.

JL

<snip ...
var Trows = [] ;
var Tcols = [] ;

Log_msg("\nTrows="+Trows, 1) ; // Debug
Log_msg("\nTcols="+Tcols, 1) ; // Debug

for (var r=0; r < rows; r++)
{
for (var c=0; c < cols; c++)
{
if (c==r)
Tcols[c] = 1 ; // Unit
else
Tcols[c] = 0 ;
}
Trows[r] = Tcols ;
Log_msg("\nTrows["+r+"]="+Trows[r], 1) ; // Debug
Log_msg("\nTcols="+Tcols, 1); // Debug
}

for (var r=0; r < rows; r++)
Log_msg("\nTrows["+r+"]="+Trows[r], 1) ; // Debug

Log_msg("\nTrows="+Trows, 1) ; // Debug
Log_msg("\nTcols="+Tcols, 1) ; // Debug
//

Resultat ou log :

Table with 3 row(s) and 3 column(s)
Trows=
Tcols=
Trows[0]=1,0,0
Tcols=1,0,0
Trows[1]=0,1,0
Tcols=0,1,0
Trows[2]=0,0,1
Tcols=0,0,1
Trows[0]=0,0,1
Trows[1]=0,0,1
Trows[2]=0,0,1
Trows=0,0,1,0,0,1,0,0,1
Tcols=0,0,1
Done

3 réponses

Avatar
Jean-Louis Crouzet
Jean-Louis Crouzet wrote:
Bonjour,

pb creer un tableau a deux dimmentions, avec sur la diagonale des 1 et
le reste avec des zeros...

Bon jusque là,tout va bien. Je collecte mettons 3 colonnes et 3 lignes
commes paramètres. Et je m'essaie.

A noter que je comprends bien que la notion multi-dimentionnelle des
Arrays en js n'est pas et qu'elle se fait par une array d'array.

Voici mon code et le log qu'il produit...je n'y arrive pas ! Merci de
vos éclairages avisés.

JL

<snip ...
var Trows = [] ;
var Tcols = [] ;

Log_msg("nTrows="+Trows, 1) ; // Debug
Log_msg("nTcols="+Tcols, 1) ; // Debug

for (var r=0; r < rows; r++)
{
for (var c=0; c < cols; c++)
{
if (c==r)
Tcols[c] = 1 ; // Unit
else
Tcols[c] = 0 ;
}
Trows[r] = Tcols ;
Log_msg("nTrows["+r+"]="+Trows[r], 1) ; // Debug
Log_msg("nTcols="+Tcols, 1); // Debug
}

for (var r=0; r < rows; r++)
Log_msg("nTrows["+r+"]="+Trows[r], 1) ; // Debug

Log_msg("nTrows="+Trows, 1) ; // Debug
Log_msg("nTcols="+Tcols, 1) ; // Debug
//

Resultat ou log :

Table with 3 row(s) and 3 column(s)
Trows > Tcols > Trows[0]=1,0,0
Tcols=1,0,0
Trows[1]=0,1,0
Tcols=0,1,0
Trows[2]=0,0,1
Tcols=0,0,1
Trows[0]=0,0,1
Trows[1]=0,0,1
Trows[2]=0,0,1
Trows=0,0,1,0,0,1,0,0,1
Tcols=0,0,1
Done


Bon, j'arrive a peu près a quelque chose, mais bon je ne suis toujours
pas convaincu d'avoir réussi un réel tableau à deux dimention!

- Trows[r] = Tcols ; // Removed
Log_msg("nTrows["+r+"]="+Trows[r], 1) ; // Debug
+ Trows.push(Tcols.toString()) ; // Replaced
Log_msg("nTrows["+r+"]="+Trows[r], 1) ; // Debug

done le log suivant:

Table with 3 row(s) and 3 column(s)
Trows Tcols Trows[0]=1,0,0
Tcols=1,0,0
Trows[1]=0,1,0
Tcols=0,1,0
Trows[2]=0,0,1
Tcols=0,0,1
Trows[0]=1,0,0
Trows[1]=0,1,0
Trows[2]=0,0,1
Trows=1,0,0,0,1,0,0,0,1
Tcols=0,0,1
Done

Avatar
YD

pb creer un tableau a deux dimmentions, avec sur la diagonale des 1 et
le reste avec des zeros...

A noter que je comprends bien que la notion multi-dimentionnelle des
Arrays en js n'est pas et qu'elle se fait par une array d'array.

Voici mon code et le log qu'il produit...je n'y arrive pas ! Merci de
vos éclairages avisés.


Ben, il fait ce que tu veux à première vue.


<snip ...
var Trows = [] ;
var Tcols = [] ;


Ouh ! Tu redéfinis tes données. Les éléments des lignes et colonnes sont
les mêmes. Alors soit tu utilises Trows soit Tcols, mais pas les deux !

Si tu utilises Trows, la première colonne se déduit comme : Trows[i][0]
où i parcourt tous les indices ; la 2e colonne Trows[i][1] etc.

Autrement exprimé un Array d'Arrays en js s'exploite avec deux boucles
imbriquées :

var numRows=3;
var numCols=3;

//Création de l'array
var monTableau = new Array(numRows);
//cette syntaxe crée un tableau dont length==numRows
for(var i=0; i<numRows; i++)
monTableau[i]=new Array(numCols);

// Utilisation avec deux boucles
for(var i=0; i<numRows; i++){
for(var j=0; j<numCols; j++){
// le traitement sur la valeur à la position monTableau[i][j]
}
}

Le reste du problème se trouve facilement une fois comprise cette
logique d'utilisation avec deux indices imbriqués.

Fin du cours !

--
Y.D.

Avatar
Jean-Louis Crouzet
YD wrote:

pb creer un tableau a deux dimmentions, avec sur la diagonale des 1 et
le reste avec des zeros...

A noter que je comprends bien que la notion multi-dimentionnelle des
Arrays en js n'est pas et qu'elle se fait par une array d'array.

Voici mon code et le log qu'il produit...je n'y arrive pas ! Merci de
vos éclairages avisés.



Ben, il fait ce que tu veux à première vue.


<snip ...
var Trows = [] ;
var Tcols = [] ;



Ouh ! Tu redéfinis tes données. Les éléments des lignes et colonnes sont
les mêmes. Alors soit tu utilises Trows soit Tcols, mais pas les deux !

Si tu utilises Trows, la première colonne se déduit comme : Trows[i][0]
où i parcourt tous les indices ; la 2e colonne Trows[i][1] etc.
Autrement exprimé un Array d'Arrays en js s'exploite avec deux boucles
imbriquées :

var numRows=3;
var numCols=3;

//Création de l'array
var monTableau = new Array(numRows);
//cette syntaxe crée un tableau dont length==numRows
for(var i=0; i<numRows; i++)
monTableau[i]=new Array(numCols);

// Utilisation avec deux boucles
for(var i=0; i<numRows; i++){
for(var j=0; j<numCols; j++){
// le traitement sur la valeur à la position monTableau[i][j]
}
}

Le reste du problème se trouve facilement une fois comprise cette
logique d'utilisation avec deux indices imbriqués.

Fin du cours !

OOOH ça c'est bien ! C'est exactement ce qu'il me faut, et maintenant il

y a bien 2 dimentions. Un GRAND merci.
JL