Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Problema basico con bucle

Estas en el tema de Problema basico con bucle en el foro de Javascript en Foros del Web. Hola que tal amigos, quería pedirles un poco de ayuda, ustedes que tienen experiencia, lo que pasa es que estoy haciendo un pequeño script para ...
  #1 (permalink)  
Antiguo 29/01/2014, 21:19
Avatar de secretcode  
Fecha de Ingreso: enero-2014
Mensajes: 16
Antigüedad: 10 años, 2 meses
Puntos: 0
Pregunta Problema basico con bucle

Hola que tal amigos, quería pedirles un poco de ayuda, ustedes que tienen experiencia, lo que pasa es que estoy haciendo un pequeño script para generar contraseñas aleatorias, el usuario ingresa un numero y el script devuelve el numero de caracteres que el usuario puso.

El problema que tengo es que si pongo un numero, por ejemplo 7, no escribe 7 caracteres en pantalla, a veces si los escribe y a veces escribe menos.

Código:
var abecedario = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',];
var raros = ['!','#','$','%','&','/','(',')','.',':','-','_']; //12 caracteres
var numero = prompt('Ingresa numero de caracteres de la pass');

for (i=0;i<numero;i++){
	var random = Math.floor(Math.random() * abecedario.length);
	var tipo_caracter = Math.floor(Math.random() * 4); //Si numero = 1 Mayuscula, 2 Minuscula, 3 numero

	switch(tipo_caracter){
		case 1:
			document.write(abecedario[random].toUpperCase());
		break;
		case 2:
			document.write(abecedario[random]);
		break;
		case 3:
			document.write(Math.floor(Math.random() * 10));
		break;
	}
}
He estado checando el código, pero aun no encuentro solución, espero su ayuda y gracias.
  #2 (permalink)  
Antiguo 30/01/2014, 03:43
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Problema basico con bucle

Código Javascript:
Ver original
  1. var abecedario = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',];
  2. var raros = ['!','#','$','%','&','/','(',')','.',':','-','_']; //12 caracteres
  3. var numero = prompt('Ingresa numero de caracteres de la pass');
  4.  
  5. for (i=0;i<numero;i++){
  6.     var numRandom = Math.floor(Math.random() * abecedario.length);
  7.     var tipo_caracter = Math.floor(Math.random() * 4);
  8.        //Si numero = 1 Mayuscula, 2 Minuscula, 3 numero
  9.        //Aqui puede dar 0 que tipo de caracter pones en eses caso.
  10.  
  11.  
  12.     switch(tipo_caracter){
  13.         case 0: //Así seria lo mismo que 1
  14.         case 1:
  15.             document.write(abecedario[numRandom].toUpperCase());
  16.         break;
  17.         case 2:
  18.             document.write(abecedario[numRandom]);
  19.         break;
  20.         case 3:
  21.             document.write(Math.floor(Math.random() * 10));
  22.         break;
  23.     }
  24. }
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 30/01/2014, 16:55
Avatar de secretcode  
Fecha de Ingreso: enero-2014
Mensajes: 16
Antigüedad: 10 años, 2 meses
Puntos: 0
Respuesta: Problema basico con bucle

Excelente, he probado agregando el case 0 y me ha funcionado, muchas gracias de verdad, por ultimo nada mas me gustaria preguntar si me podrian explicar un poco el porque asi si funciono, saludos
  #4 (permalink)  
Antiguo 30/01/2014, 17:38
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Problema basico con bucle

Cita:
var tipo_caracter = Math.floor(Math.random() * 4);
//Si numero = 1 Mayuscula, 2 Minuscula, 3 numero
//Aqui puede dar 0 que tipo de caracter pones en eses caso.
Estabas suponiendo que Math.floor(Math.random() * 4); solo podia dar 1,2 o 3 y no es cierto, puesto que puede dar 0. Al poner el case 0: estas dando un resultado para los casos en que es cero... asi de simple.... ya te puse el comentario //Así seria lo mismo que 1 ya que no hay un break; si es cero hace lo mismo que si es 1.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #5 (permalink)  
Antiguo 30/01/2014, 18:36
Avatar de secretcode  
Fecha de Ingreso: enero-2014
Mensajes: 16
Antigüedad: 10 años, 2 meses
Puntos: 0
Respuesta: Problema basico con bucle

Genial, ya lo entiendo, muchas gracias de verdad, marco como solucionado

Etiquetas: basico, bucle
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:21.