Comunidad de diseño web y desarrollo en internet online

error de calaculo

Citar            
MensajeEscrito el 23 Feb 2010 02:12 am
resulta que debo contar cuantos caracteres hay en un arreglo. Este arreglo primero genera la Funcion de fibonacci, luego divide los digitos y guarda estos digitos en un nuevo arreglo, del que quiero contar la cantidad que hay en ellos, pero sucede que actualmente me dice cualquier cosa:

Código ActionScript :

var a:Array=new Array(1,1,2,3);
var nuevosValores:Array=new Array(1,1,2);

/*Funcion de Fibonacci*/

for (var i:uint=3; i<10; i++)
{
   a.push(a[i-1]+a[i])
   //trace(formatear (a[i]));
   nuevosValores.push(formatear (a[i]))
}


function formatear(e:Number) // ingreso numero
{
   var retornar:String;
   var decimales:String = "";
   if((String(e).length - String(e).split(".").join("").length) > 0)
   {
      retornar = String(e).substr(0, String(e).indexOf("."));
      decimales = String(e).substr(String(e).indexOf("."), String(e).length);
    }
   else
   {
       retornar = String(e);
   }

   var c:int = 0; // cantidad de comas
   
   for(var i:int = 0;(i+c) < retornar.length;i++)
   {
       if(i != 0)
       {
         var h:int = i;
         retornar = retornar.substr(0, -(i+h-1)) + "," + retornar.substr(-(i+h-1), i+h-1);
         c++;
      }
   }
   return retornar+decimales; // devuelve string, con la coma dejaria de ser number
}
 

trace("DIGITOS: "+nuevosValores);
trace("NUMEROS: "+a)


Resultado de estos trace:

Código ActionScript :

//DIGITOS: 1,1,2,3,5,8,1,3,2,1,3,4,5,5
//NUMEROS: 1,1,2,3,5,8,13,21,34,55,89


Si contamos, la cantidad de digitos son 14, sin embargo el arreglor dice:

Código ActionScript :

trace("DIGITOS: "+nuevosValores.length); //DIGITOS: 10


Lo cual no es correcto.

También probe:

Código ActionScript :

trace("DIGITOS: "+nuevosValores.toString().length); //DIGITOS: 27

lo cual tampoco es correcto, ya que cuenta las , que se generan al cargar el arreglo.

Por lo tanto, no encuentro el error, por lo que espero su ayuda.

Desde ya gracias. Saludos

Por bubudrc

Claber

591 de clabLevel

1 tutorial

 

mayo 2006

chrome
Citar            
MensajeEscrito el 23 Feb 2010 07:32 am
supongo que "nuevosValores" tiene como datos, p.e. "1", "1,2","3,5,8"... Por eso cuando haces el "trace" cuantas más de los que son
como idea y sin mirar la función formatear -es que no tengo muy claro lo que quieres hacer-
Haz en dos pasos el bucle principal

Código ActionScript :

for (var i:uint=3; i<10; i++)
{
    var numero=a[i-1]+a[i]
   a.push(numero)
   nuevosValores.push(formatear (numero))
}

Con eso evitas que pase como "referencia" la variable -no creo que sea eso-
¿qué es lo que quieres hacer con la función "formatear"?

Por Eliseo2

710 de clabLevel



 

firefox
Citar            
MensajeEscrito el 23 Feb 2010 11:59 am
Hola Eliseo2, gracias por tu respuesta, sin embargo los valores siguen dando los mismos resultados.

Con respecto a la funcion "formatear" lo que hago es pasarle un numero y esta función me la divide en dígitos individuales.

En este caso, le paso un arreglo de numeros, por eso el for de inicio que seria la ley de fibonacci.

Al pasarle el nro a "formatear", guardo los digitos retornados en el arreglo nuevosValores, lo que me permitirian despues manejarlos individualmente.

Pareciera que carga bien los datos y divide perfecto en digitos, sin embargo, como ya he dicho la cuenta de los elementos dentro del arreglo no es correcta y ese es el error a solucionar.

Desde ya gracias.
Saludos

Por bubudrc

Claber

591 de clabLevel

1 tutorial

 

mayo 2006

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.