PDA

View Full Version : [JavaScript]Problema funzione


cirano994
31-03-2011, 17:59
Ciao a tutti, vi espongo il problema:

Ho fatto una funzione in JavaScript per una conversione Binario --> Decimale:


function bin_to_dec(a)
{
var vettore=new Array (32);
var errore=0;
var num=0;
for(var i=0;i<(a.length);i++)
{
if(a.charAt(i)!=0 && a.charAt(i)!=1)
errore++;
else
vettore[i]=a.charAt(i);
}
if (errore==0)
{
while (i>=0)
{
num=num+(vettore[i]*Math.pow(2,j));
i--;
j++;
}
document.getElementById("dec").innerHTML=num;
}
else
alert("Errore");
}


Il problema: non mi modifica il paragrafo con ID "dec".

a è una stringa contenente 0 e 1 (se si mette altro mi manda l'alert("Errore")).

Provando ad eseguire passo passo il codice sembra che il problema sia nella parte in grassetto.

C'è qualche cosa che non funziona in quella parte?

Grazie mille

wingman87
31-03-2011, 18:58
function bin_to_dec(a)
{
var vettore=new Array (32);
var errore=0;
var num=0;
for(var i=0;i<(a.length);i++)
{
if(a.charAt(i)!=0 && a.charAt(i)!=1)
errore++;
else
vettore[i]=a.charAt(i);
}
if (errore==0)
{
var j=0;
i--; // altrimenti i parte da a.length / in alternativa i=a.length-1;
while (i>=0)
{
num=num+(vettore[i]*Math.pow(2,j));
i--;
j++;
}
document.getElementById("dec").innerHTML=num;
}
else
alert("Errore");
}

cirano994
31-03-2011, 19:35
function bin_to_dec(a)
{
var vettore=new Array (32);
var errore=0;
var num=0;
for(var i=0;i<(a.length);i++)
{
if(a.charAt(i)!=0 && a.charAt(i)!=1)
errore++;
else
vettore[i]=a.charAt(i);
}
if (errore==0)
{
var j=0;
i--; // altrimenti i parte da a.length / in alternativa i=a.length-1;
while (i>=0)
{
num=num+(vettore[i]*Math.pow(2,j));
i--;
j++;
}
document.getElementById("dec").innerHTML=num;
}
else
alert("Errore");
}


Ma che deficiente! :doh: :muro:

Effettivamente deve partire da a.length-1, altrimenti l'ultimo elemento "non esiste" (se a.length = 5; la posizione che ricopre l'ultima lettera è la 4, dico bene?)
Tra l'altro nella funzione che avevo creato prima di questa (Dec --> Bin) l'avevo messo i--. :muro:

j=0 svista mia. :mad:

Grazie mille.