Tableaux

Résolu
debutant VB Messages postés 93 Date d'inscription lundi 3 juillet 2006 Statut Membre Dernière intervention 25 juin 2010 - 28 oct. 2007 à 13:03
debutant VB Messages postés 93 Date d'inscription lundi 3 juillet 2006 Statut Membre Dernière intervention 25 juin 2010 - 29 oct. 2007 à 19:54
Bonjour à tous, j'essaye de débugger mon programme de sudoku,
mais j'ai un petit problème ; en simplifié, c'est celui-là :
Lorsque j'exécute le code js ci-dessous, je me rend compte que
la ligne "numD[1][2] = 2;" change numD[1][2] mais aussi numD[0][2] !
(j'obtiens les messages "1:0; 2:0;" et "1:2; 2:2;" ...)
"
 var numU; numU = new Array(3);
 var numD; numD = new Array(2);
 numU[0] = 5; numU[1] = 6; numU[2] = 0;
 numD[0] = numU; numD[1] = numU;
 alert("1:"+numD[0][2]+"; 2:"+numD[1][2]+";");
 numD[1][2] = 2;
 alert("1:"+numD[0][2]+"; 2:"+numD[1][2]+";");
"

Merci de me dire ce qu'il faut que je fasse pour que mon code fonctionne.
(je m'attendais à un "1:0; 2:0;" et "1:0; 2:2;")

7 réponses

cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
29 oct. 2007 à 15:43
var a=new Array("a","b","c");
var b=a;
var c=a.slice(0);
b[1]="xxx";
c[2]="yyy";
for ( var i=0;imon Site]     [M'écrire]
3
Zobibol Messages postés 469 Date d'inscription mercredi 9 janvier 2002 Statut Membre Dernière intervention 20 février 2017 6
29 oct. 2007 à 15:45
Bonjour à vous
Je sais pas trop si j'ai pigé, mais j'ai obtenu le résultat demandé ( sans avoir tout bien compris ) en passant par le join("..").split(".."):

    var numU = new Array();
                var numD = new Array();
                numU[0] =5;           
                numU[1] =6;
                numU[2] =0;
                numD[0]=numU.join(",").split(",");
                numD[1]=numU.join(",").split(",");
                numD[0][2]=2;
                alert("0,2\t"+numD[0][2]+"\n1,2\t"+numD[1][2]);

et la hop y a bien la que la valeur du numD[0][2] qui est modifiée, mais comme toujours ais-je compris ?

[o-_-o]
3
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
29 oct. 2007 à 09:44
Bonjour,

    pas tout à fait compris... mais, ça baigne
        ( les index commencent à 0 )




 var numU = new Array(3);




 var numD = new Array(2);




 numU[0] = 5;




 numU[1] = 6;




 numU[2] = 0;




 numD[0]=numU;




 numD[1]=numU;




 numD[1][2] = 2;




 alert("0,1\t"+numD[0][1]+"\n1,2\t"+numD[1][2]);









<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
0
debutant VB Messages postés 93 Date d'inscription lundi 3 juillet 2006 Statut Membre Dernière intervention 25 juin 2010
29 oct. 2007 à 12:50
Euh, je me suis sans doute mal exprimé.
C'est peut-être un bug que ça ne fait pas dans tous les navigateurs,
mais en tout cas, ça ne marche pas dans mon fichier .hta :
" var numU = new Array(3);
 var numD = new Array(2);
 numU[0] = 5;
 numU[1] = 6;
 numU[2] = 0;
 numD[0]=numU;
 numD[1]=numU;
 alert("0,2\t"+numD[0][2]+"\n1,2\t"+numD[1][2]);
 numD[1][2] = 2; 
 alert("0,2\t"+numD[0][2]+"\n1,2\t"+numD[1][2]); "

J'obtiens "0,2   0
               1,2   0",
et           "0,2   2
               1,2   2"
Est-ce normal que la ligne "numD[1][2] = 2;" ai changé numD[0][2] ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
29 oct. 2007 à 13:13
>>C'est peut-être un bug que ça ne fait pas dans tous les navigateurs,
    ne cherche pas de bugs.
         on peut dire que tous les navigateurs en sont tous exempts.
>>mais en tout cas, ça ne marche pas dans mon fichier .hta :
    un .hta, ça se comporte comme un .htm ( ou presque )
   
var numU = new Array(3);
var numD = new Array(2);
 numU[0] = 5;            
 numU[1] = 6;
 numU[2] = 0;
 numD[0]=numU;
 numD[1]=numU;
 alert("0,2\t"+numD[0][2]+"\n1,2\t"+numD[1][2]);
    ben.... tableau[0 ou 1][2] n'est pas initilalisé !
    tu as chargé tableau[n][0]  et tableau[n][1] pas tableau[n][2]




<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
0
debutant VB Messages postés 93 Date d'inscription lundi 3 juillet 2006 Statut Membre Dernière intervention 25 juin 2010
29 oct. 2007 à 15:12
Mais si je mets un 1 à la place du 0 de numU[2], ça reviens au même ?
On obtiens "0,2   1
                   1,2   1",
et               "0,2   2
                   1,2   2"
La ligne "numD[1][2] = 2;" change toujours numD[0][2],
en même temps que numD[1][2], de 1 à 2 ?
0
debutant VB Messages postés 93 Date d'inscription lundi 3 juillet 2006 Statut Membre Dernière intervention 25 juin 2010
29 oct. 2007 à 19:54
Ok, merci.
je n'avais pas compris que les tableaux étaient associés mais qu'on pouvait l'empêcher avec .slice(0) (ou .join(",").split(",")  ).
0
Rejoignez-nous