Test Foro de elhacker.net SMF 2.1

Programación => Scripting => Mensaje iniciado por: Linton en 11 Julio 2013, 08:28 AM

Título: [JS]¿De modo que pueden encadenarse dos while?
Publicado por: Linton en 11 Julio 2013, 08:28 AM
Estaba haciendo ejercicios con javascript, y se me ocurrió probar una variante del enunciado de un problemilla, que pedía obtener los números entre dos cifras a y b anotadas por el usuario, quien debía introducir primero la mayor.

Quise resolverlo para cualquiera de los casos, a>b ó a<b, y probé a poner dos while, así:
Código (javascript) [Seleccionar]
a = parseInt(prompt('Escribe un número'));
b = parseInt(prompt('Escribe otro'));
while((a-1)>b){
  b++;
  document.write(b + '<br />');
}
while((b-1)>a){
  a++;
  document.write(a + '<br />')


¡Y funciona!  :) ¿Pero este recurso es correcto? ¿Puedo poner n operadores while en un programa?

Gracias, un saludo.
Título: Re: [JS]¿De modo que pueden encadenarse dos while?
Publicado por: engel lex en 11 Julio 2013, 09:10 AM
es correcto y puedes poner N operadores while en tu programa incluso si quieres anidados... pero hay mejores métodos... por ejemplo
Código (javascript) [Seleccionar]

a = parseInt(prompt('Escribe un número'));
b = parseInt(prompt('Escribe otro'));

if(a>b){
mayor = a;
menor = b;
} else{
mayor = b;
menor = a;
}

while((mayor-1)>menor){
  menor++;
  document.write(menor + '<br />');
}


puedes usar el operador ternario para resumirlo más

Código (javascript) [Seleccionar]

a = parseInt(prompt('Escribe un número'));
b = parseInt(prompt('Escribe otro'));

mayor = a>b? a:b;//esto funciona igual que el if el "?" es el operador y el ":" es el else
menor = a>b? b:a;

for(i=(menor+1);i<mayor;i++) document.write(i + '<br />'); // como es una sola instruccion no necesita llaves


Título: Re: [JS]¿De modo que pueden encadenarse dos while?
Publicado por: Linton en 11 Julio 2013, 10:23 AM
¡Tomo nota, muchas gracias por tu ayuda!  :)