elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web (Moderador: #!drvy)
| | |-+  Función que devuelva un array (javascript)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Función que devuelva un array (javascript)  (Leído 18,453 veces)
Fox_Neo

Desconectado Desconectado

Mensajes: 234



Ver Perfil
Función que devuelva un array (javascript)
« en: 10 Diciembre 2010, 13:26 pm »

Hola gracias por leer el post, estoy inciandome en javascript en una asignatura de la universidad y tengo que hacer un programa. Una parte parte de dicho programa he pensado hacerlo mediante una función. Tengo que crear varios arrays y había pensado hacerlo con una función porque mirando en manuales he visto que una función puede devolver un array, he creado un código pero no funciona correctamente. Me permite ingresar los números en el vector pero a la hora de imprimir  los valores del vector no se me imprimen, el código es el siguiente:
Código
  1. <HTML>
  2. <HEAD>
  3. <TITLE> Creado por Fox_Neo (si copias el code pon la fuente)</TITLE>
  4. </HEAD>
  5. <BODY>
  6. <SCRIPT LANGUAGE="javascript">
  7.  
  8. function Polinomio(grado) //creo la funcion para crear el vector y rellenarlo la variable grado me va a determinar la longitud del vector
  9. {
  10. var vector=new Array(); //declaración de vector para la función
  11.  
  12. for(var i=0;i<grado;i++) //introducir los números en el vector hasta que llegue hasta el graso marcado
  13. {
  14.  vector[i]=window.prompt("Introduce los numeros");
  15.  }
  16.  return vector; // Devuelve el vector obtenido
  17. }
  18. var grado= window.prompt("introduce el grado del polinomio"); //introduce la longitud del vector
  19. Polinomio(grado);  //llamada a la función
  20. for(i=0;i<grado1;i++) //imprimir valores del vector
  21. {
  22. document.write(vector[i]);
  23. }
  24. </SCRIPT>
  25. </BODY>
  26. </HTML>

Gracias.


En línea

Shell Root
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.724


<3


Ver Perfil WWW
Re: Función que devuelva un array (javascript)
« Respuesta #1 en: 10 Diciembre 2010, 15:11 pm »

Es porque el array vector[], se encuentra con vida, -por así decirlo-, dentro de la función, no fuera de ella. Lo puedes corregir de la siguiente forma,
Código
  1. <script language="javascript">
  2.  
  3. function Polinomio(grado){
  4.  var vector = new Array();
  5.  for(var i=0; i<grado; i++){
  6.    vector[i] = prompt( "Introduce los numeros", "" );
  7.  }
  8.  return vector;
  9. }
  10.  
  11. var grado = prompt( "introduce el grado del polinomio", "" );
  12. var vectorAux = new Array();
  13. vectorAux = Polinomio(grado);
  14. for(var i=0; i<grado; i++){
  15.  document.write( vectorAux[i] + "<br />" );
  16. }
  17. </script>


En línea

Te vendería mi talento por poder dormir tranquilo.
Fox_Neo

Desconectado Desconectado

Mensajes: 234



Ver Perfil
Re: Función que devuelva un array (javascript)
« Respuesta #2 en: 10 Diciembre 2010, 16:17 pm »

Ok gracias Shell Root, me has quitado un dolor de cabeza que tenía desde anoche :P no entendiá por qué no funcionaba, ahora funciona perfectamente, le he añadido unas instrucciones para que si se introduce un caracter no numérico me de una ventana de alerta. Funciona perfectamente. ;)

Claro lógicamente el valor de retorno había que cargarlo en otro vector que no estubiera contenido en la función!! :xD  

Ahora seguiré con el programa esto solo era el principio. Cuando termine el programa y lo entrege lo publicaré por si a alguien le resulta de utilidad.

Gracias.

Salu2.
« Última modificación: 10 Diciembre 2010, 16:22 pm por Fox_Neo » En línea

Shell Root
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.724


<3


Ver Perfil WWW
Re: Función que devuelva un array (javascript)
« Respuesta #3 en: 10 Diciembre 2010, 19:14 pm »

Y que función usaste para validar esos caracteres?
En línea

Te vendería mi talento por poder dormir tranquilo.
Fox_Neo

Desconectado Desconectado

Mensajes: 234



Ver Perfil
Re: Función que devuelva un array (javascript)
« Respuesta #4 en: 12 Diciembre 2010, 00:10 am »

Y que función usaste para validar esos caracteres?
Hola  no es una función (creo que dije unas instrucciones) ;), es un bucle con un while:
Código
  1. vector[i]=window.prompt("Introduce los numeros", "" );//introducimos los numeros
  2. while(isNaN(vector[i])==true) //verifica si el contenico es un número si es así devuelve false (0), si no es un número true (1)
  3. {
  4. window.alert("Valor no admitido. Solo permitido valores numéricos");
  5. vector[i]= window.prompt("introduce los numeros", "" );
  6. }

tengo otro problema con otra parte del codigo, con el producto de dos vectores me devuelve la función un vector de 23 posiciones,  el code:
Código
  1. function multiplicacion(p1,p2,g1,g2)
  2. {
  3. var m=new Array();
  4. arrayaux= new Array();
  5. for(i=g1+g2;i>=0;i--) //inicialización del vectorauxiliar a 0
  6. {arrayaux[i]=0;}
  7. for(a=g1;a>=0;a--)
  8. {
  9. for(i=g1+g2;i>=0;i--) //inicialización del vector m a 0
  10. {
  11. m[i]=0;
  12. }
  13. for(b=g2;b>=0;b--)
  14. {
  15. m[a+b]=p1[a]*p2[b]
  16. }
  17. for(i=(g1+g2);i>=0;i--)
  18. {
  19. arrayaux[i]=parseFloat(arrayaux[i])+parseFloat(m[i]);
  20. }
  21. }
  22. return m;
  23. }
  24. var vectormultiplicacion = new Array();
  25. vectormultiplicacion= multiplicacion(Polinomio1,Polinomio2,grado1,grado2);
Los vectores que introduzco en la función  son correctos ya que he hecho otras operaciones y no he tenido ningún problema, no se, creo que el razonamiento para realizar la operación está bien, no veo por que me da un vector de de mucha posiciones depende de los datos introducidos (lo he sabido por que he insertado window.alert(vectormultiplicacion.length); al final del code
Gracias.
PD: Ya me he dado cuenta que hay otro  en el foro (y en otros foros) que tiene que  hacer un code muy parecido a lo que tengo que hacer yo, por eso cuando lo entregue  pongo el code completo.    
« Última modificación: 12 Diciembre 2010, 00:41 am por Fox_Neo » En línea

Fox_Neo

Desconectado Desconectado

Mensajes: 234



Ver Perfil
Re: Función que devuelva un array (javascript)
« Respuesta #5 en: 13 Diciembre 2010, 15:31 pm »

Bueno ya solucioné el problema de la multiplicación del polinomio las operaciones las realiza correctamente pero en la pagina no las imprime correctamente, para visualizar los resultados muestro el valor del vector en una ventana, los resultados son los coeficientes de las x y la posición que ocupen el vector es el grado de la x  Aquí os dejo el code por si a alguien le interesa.
Salud2.


Fox_Neo


Código
  1. <HTML>
  2.  
  3. <HEAD>
  4.  
  5. <TITLE> Creado por Fox_Neo (si copias el código pon la fuente) </TITLE>
  6.  
  7. </HEAD>
  8.  
  9. <BODY>
  10.  
  11. <SCRIPT LANGUAGE="javascript">
  12.  
  13.  
  14.  
  15. function Polinomio(grado) //creo la funcion para crear el vector y rellenarlo la variable grado me va a determinar la longitud del vector
  16.  
  17. {
  18.  
  19. var vector=new Array(); //declaración de vector para la función
  20.  
  21. for(var i=grado;i>=0;i--) //introducir los números en el vector hasta que llegue hasta el grado marcado
  22.  
  23. {
  24.  
  25. vector[i]=window.prompt("Introduce los numeros", "" );//introducimos los numeros
  26.  
  27.     while(isNaN(vector[i])==true)//en esta parte se comprueba si lo introducido es un número o un caracter
  28. //mediante la instrución isNaN que si es un caracter devuelve 1 (true)
  29.  
  30. {
  31.  
  32. window.alert("Valor no admitido. Solo permitido valores numéricos");
  33.  
  34. parseFloat(vector[i])= window.prompt("introduce los numeros", "" );
  35.  
  36. }
  37.  
  38. }
  39.  
  40. return vector; // Devuelve el vector obtenido
  41.  
  42. }
  43.  
  44. function gradopolinomio() //creación de función para introducir el grado y validarlo
  45.  
  46. {
  47.  
  48. var g=window.prompt("introduce el grado del polinomio"); // aqui se introduce el grado del polinomio
  49.  
  50. while(isNaN(g)==true) //valida la variable introducida si es numerica la acepta si no sale un mensaje
  51. //de error hasta que se introduzca un numero
  52.  
  53. {
  54.  
  55. window.alert("Valor no admitido. Solo permitido valores numericos");
  56.  
  57. g=window.prompt("introduce el grado del polinomio");
  58.  
  59. }
  60.  
  61. return parseInt(g);
  62.  
  63. }
  64.  
  65. function suma(p1,p2,g1,g2) //declaracion de la funcion suma
  66.  
  67. {
  68.  
  69. var s=new Array(); //decalaración del vector interno del la función
  70.  
  71. if(g1>g2)  //aqui se compara cual grado es mayor  para que se genere un vector
  72. //del tamaño adecuado y no queden operaciones sin reañizar
  73.  
  74. {
  75.  
  76. for(var b=(g2+1);b<=g1;b++)
  77.  
  78. {
  79.  
  80. var c=p2.push(0);
  81.  
  82. }
  83.  
  84. for(i=g1;i>=0;i--)
  85.  
  86. {
  87.  
  88. s[i]=parseFloat(p1[i])+parseFloat(p2[i]); // es necesario pasar los caracteres a valores de coma flotante
  89. // porque sino une los números y no los suma
  90.  
  91. }
  92.  
  93. }
  94.  
  95. else
  96.  
  97. {
  98.  
  99. for(var b=(g1+1);b<=g2;b++)
  100.  
  101. {
  102.  
  103. var c=p1.push(0);
  104.  
  105. }
  106.  
  107. for(i=g2;i>=0;i--)
  108.  
  109. {
  110.  
  111. s[i]=parseFloat(p1[i])+parseFloat(p2[i]);
  112.  
  113. }
  114.  
  115. }
  116.  
  117. return s; //la función retorna el valor del vector suma
  118.  
  119. }
  120.  
  121. function resta(p1,p2,g1,g2)
  122.  
  123. {
  124.  
  125. var r=new Array(); //decalaración del vector interno del la función
  126.  
  127. if(g1>g2)  //aqui se compara cual grado es mayor  para que se genere un vector del tamaño adecuado
  128. //y no queden operaciones sin reañizar
  129.  
  130. {
  131.  
  132. for(var b=(g2+1);b<=g1;b++) //otra manera de ordenar el vector sin tener que inicializar el vector a 0,
  133. //aunque siempre es mejor inicializar el vector
  134.  
  135. {
  136.  
  137. var c=p2.push(0);
  138.  
  139. }
  140.  
  141. for(i=g1;i>=0;i--)
  142.  
  143. {
  144.  
  145. r[i]=parseFloat(p1[i])-parseFloat(p2[i]); // es necesario pasar los caracteres a valores de coma flotante
  146. //porque sino une los números y no los suma
  147.  
  148. }
  149.  
  150. }
  151.  
  152. else
  153.  
  154. {
  155.  
  156. for(var b=(g1+1);b<=g2;b++)
  157.  
  158. {
  159.  
  160. var c=p1.push(0);
  161.  
  162. }
  163.  
  164. for(i=g2;i>=0;i--)
  165.  
  166. {
  167.  
  168. r[i]=parseFloat(p1[i])-parseFloat(p2[i]);
  169.  
  170. }
  171.  
  172. }
  173.  
  174. return r; //la función retorna el valor del vector resta
  175.  
  176. }
  177.  
  178. function multiplicacion(p1,p2,g1,g2)
  179.  
  180. {
  181.  
  182. var m= new Array(); // declaro los dos arrays necesarios
  183.  
  184. var arrayaux= new Array();
  185.  
  186.  
  187.  
  188. for(var i=parseInt(g1+g2);i>=0;i--) //pongo a cero los dos vectores para que luego puedadn sumar corectamente
  189. //g1 es grado del polinomio1 y g2 grado de polinomio2
  190.  
  191. {
  192.  
  193. m[i]=0;
  194.  
  195. arrayaux[i]=0;
  196.  
  197. }
  198.  
  199. for(var a=g1;a>=0;a--)  
  200.  
  201. {
  202.  
  203. for(var b=g2;b>=0;b--)  //multiplica el 1º monomio por el segundo polinomio luego se guarda en el vector auxiliar
  204.  
  205. {
  206.  
  207. m[a+b]=parseFloat(p1[a])*parseFloat(p2[b]);
  208.  
  209.  
  210.  
  211. }
  212.  
  213. for(var i=parseInt(g1+g2);i>=0;i--)       //guardo el resultado de la multiplicacion del monomoio para luego sumarlo
  214.  
  215. {
  216.  
  217. arrayaux[i]=parseFloat(arrayaux[i])+parseFloat(m[i]);
  218.  
  219. }
  220.  
  221. for(var i=parseInt(g1+g2);i>=0;i--) //cuando acaba de sumar el polinomio la variable donde se ha realizado
  222. //la multiplicación del monomio por el polinomiose pone a 0 para evitar errores
  223.  
  224. {
  225.  
  226. m[i]=0;
  227.  
  228. }
  229.  
  230. }
  231.  
  232. return arrayaux;
  233.  
  234. }
  235.  
  236. function imprimir(P,g)
  237.  
  238. {
  239.  
  240. for(var i=g;i>=0;i--) //imprimir valores  actualmente no imprime correctamente debiera de imprimir
  241. //el valor del vector junto el signo y la x (menos si es 0 o 1) y la posición
  242. //del vector como grado del polinomio imprimido como subindice (exceptuando 0 y 1)
  243.  
  244. {
  245.  
  246. var z=g;
  247.  
  248. if(i==z&&P[i]>1)
  249.  
  250. {
  251.  
  252. document.write( P[i] + "x<sup>"+i+"</sup>");
  253.  
  254. }
  255.  
  256. if(i==g&&P[i]==1)
  257.  
  258. {
  259.  
  260. document.write(  "x<sup>"+i+"</sup>");
  261.  
  262. }
  263.  
  264. if(i>1&&z>P[i]>1)
  265.  
  266. {
  267.  
  268. document.write("+");
  269.  
  270. document.write( P[i] + "x<sup>"+i+"</sup>");
  271.  
  272. }
  273.  
  274. if(i>1&&P[i]==1)
  275.  
  276. {
  277.  
  278. document.write("+");
  279.  
  280. document.write("x<sup>"+ i +"</sup>");
  281.  
  282. }
  283.  
  284. if(i==1&&P[i]==1)
  285.  
  286. {
  287.  
  288. document.write("+");
  289.  
  290. document.write("x");
  291.  
  292. }
  293.  
  294. if(i==1&&P[i]>1)
  295.  
  296. {
  297.  
  298. document.write("+");
  299.  
  300. document.write(P[i] +"x");
  301.  
  302. }
  303.  
  304. if(i==0&&P[i]>0)
  305.  
  306. {
  307.  
  308. document.write("+");
  309.  
  310. document.write(P[i]);
  311.  
  312. }
  313.  
  314. if(i==0&&P[i]<0)
  315.  
  316. {
  317.  
  318. document.write("-");
  319.  
  320. document.write(Math.abs(P[i]));
  321.  
  322. }
  323.  
  324. if(i>1&&P[i]==-1)
  325.  
  326. {
  327.  
  328. document.write("-");
  329.  
  330. document.write("x<sup>"+i+"</sup>");
  331.  
  332. }
  333.  
  334. if(i>1&&P[i]<-1)
  335.  
  336. {
  337.  
  338. document.write("-");
  339.  
  340. document.write( Math.abs(P[i]) + "x<sup>"+i+"</sup>");
  341.  
  342. }
  343.  
  344. if(i==1&&P[i]<-1)
  345.  
  346. {
  347.  
  348. document.write("-");
  349.  
  350. document.write(Math.abs(P[i]) +"x");
  351.  
  352. }
  353.  
  354. if(i==1&&P[i]==-1)
  355.  
  356. {
  357.  
  358. document.write("-");
  359.  
  360. document.write(Math.abs(P[i]) +"x");
  361.  
  362. }
  363.  
  364. }
  365.  
  366.  
  367.  
  368. }
  369.  
  370.  
  371.  
  372. var grado1 = gradopolinomio(); //llamada a la función para introducir el grado del 1º polinomio
  373.  
  374. var Polinomio1 = new Array(); //declaración del vector Polinomio1 con el que se va a trabajar
  375.  
  376. Polinomio1 = Polinomio(grado1); //se llama a la función de creación del vector y se almacena en un vector
  377. //global Polinomio1 para dejar a la función libre
  378.  
  379. window.alert("A continuación introduce los datos del 2º polinomio"); //mensaje que indica que se procedad a introducir el segundo polinomio
  380.  
  381. var grado2 = gradopolinomio(); //llamada a la función para introducir el grado del 2º polinomio
  382.  
  383. var Polinomio2 = new Array();//declaración del vector Polinomio2 con el que se va a trabajar
  384.  
  385. Polinomio2 = Polinomio(grado2);//se llama a la función de creación del vector  y se almacena en un vector global
  386. // Polinomio2 para dejar a la función libre
  387.  
  388. var vectorsuma= new Array(); //se crea un vector suma  
  389.  
  390. vectorsuma = suma(Polinomio1,Polinomio2,grado1,grado2); // se llama a la funcion suma y el resultado se guarda en vectorsuma
  391.  
  392. var vectorresta= new Array();
  393.  
  394. vectorresta = resta(Polinomio1,Polinomio2,grado1,grado2);
  395.  
  396. var vectormultiplicacion = new Array();
  397.  
  398. vectormultiplicacion= multiplicacion(Polinomio1,Polinomio2,grado1,grado2);
  399.  
  400. window.alert("La suma tiene los siguientes valores de menor a mayor grado de exponente" +vectorsuma); //estas ventanas se ponen para
  401. //ver realmente el resultado de la operación
  402.  
  403. window.alert("La resta tiene los siguientes valores menor a mayor grado de exponente" +vectorresta);
  404.  
  405. window.alert("La multiplicacion tiene los siguientes valores menor a mayor grado de exponente" +vectormultiplicacion);
  406.  
  407. </SCRIPT>
  408.  
  409. <H2>Polinomios con los que operar:</H2>
  410.  
  411. <SCRIPT>
  412.  
  413. document.write( "Polinomio1: ");
  414.  
  415. imprimir(Polinomio1,grado1);
  416.  
  417. document.write("</BR>");
  418.  
  419. document.write( "Polinomio2: ");
  420.  
  421. imprimir(Polinomio2,grado2);
  422.  
  423. </SCRIPT>
  424.  
  425. <H2>Resultado de la suma:</H2>
  426.  
  427. <SCRIPT>
  428.  
  429. imprimir(vectorsuma,vectorsuma.length);
  430.  
  431. document.write("</BR>");
  432.  
  433. </SCRIPT>
  434.  
  435. <H2>Resultado de la resta:</H2>
  436.  
  437. <SCRIPT>
  438.  
  439. imprimir(vectorresta,vectorresta.length);
  440.  
  441. document.write("</BR>");
  442.  
  443. </SCRIPT>
  444.  
  445. <H2>Resultado de la multiplicación:</H2>
  446.  
  447. <SCRIPT>
  448.  
  449. imprimir(vectormultiplicacion,vectormultiplicacion.length);
  450.  
  451. document.write("</BR>");
  452.  
  453. </SCRIPT>
  454.  
  455. </BODY>
  456.  
  457. </HTML>
  458.  
  459.  
  460.  
  461.  

« Última modificación: 13 Diciembre 2010, 15:35 pm por Fox_Neo » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
funcion que devuelva 4 parametros
Programación C/C++
mapers 3 4,699 Último mensaje 4 Diciembre 2010, 04:51 am
por mapers
Convertir Array de php a Array de javascript
PHP
WHK 0 4,608 Último mensaje 23 Enero 2012, 18:05 pm
por WHK
Problema con función de array de 2 dimensiones
Programación C/C++
ZedGe 1 2,320 Último mensaje 26 Mayo 2012, 18:58 pm
por ZedGe
Funcion que devuelva un array
Programación C/C++
davidrodribarri 2 2,109 Último mensaje 19 Febrero 2017, 09:49 am
por davidrodribarri
Funcion que devuelva un array
Programación C/C++
statham 3 2,765 Último mensaje 1 Febrero 2019, 11:20 am
por statham
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines