Foro de elhacker.net

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
  1. a = parseInt(prompt('Escribe un número'));
  2. b = parseInt(prompt('Escribe otro'));
  3. while((a-1)>b){
  4.  b++;
  5.  document.write(b + '<br />');
  6. }
  7. while((b-1)>a){
  8.  a++;
  9.  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
  1. a = parseInt(prompt('Escribe un número'));
  2. b = parseInt(prompt('Escribe otro'));
  3.  
  4. if(a>b){
  5. mayor = a;
  6. menor = b;
  7. } else{
  8. mayor = b;
  9. menor = a;
  10. }
  11.  
  12. while((mayor-1)>menor){
  13.  menor++;
  14.  document.write(menor + '<br />');
  15. }
  16.  

puedes usar el operador ternario para resumirlo más

Código
  1. a = parseInt(prompt('Escribe un número'));
  2. b = parseInt(prompt('Escribe otro'));
  3.  
  4. mayor = a>b? a:b;//esto funciona igual que el if el "?" es el operador y el ":" es el else
  5. menor = a>b? b:a;
  6.  
  7. for(i=(menor+1);i<mayor;i++) document.write(i + '<br />'); // como es una sola instruccion no necesita llaves
  8.  
  9.  


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!  :)