ayuda con javascript

Iniciado por amok, 27 Marzo 2017, 21:45 PM

0 Miembros y 1 Visitante están viendo este tema.

amok

Hola compañeros.

Estoy intentando hacer un ejercicio de javascript, el cual comprueba si los valores introducidos por teclado son los mismos que se crean aletoriamente. Pero no se, una vez introducidos los números entra en bucle infinito.

Me podeis ayudar?

<script type="text/javascript">

var a=new Array (10);
var i=0;
var existe=0;
var x;


for (var i=0; i<a.length; i++){
x=Math.round((Math.random()*9)+1);
a[i]=x
document.write (a[i]+ " ");
}

document.write ("<br>");

for (var i=0; i<a.length; i++){
a[i]=parseInt(prompt("Introduzca numero",' '));
document.write (a[i]+ " ");
}

while (i<a.length || existe==0){
if (x==a[i])
{
existe=1;
auxp=i;
}
else {i++;}
}

if (existe==1)
{
document.write (" <br> El n&uacute;mero " +x+ " est&aacute; en el array " + " En la posición " + i);
}
else
{
document.write (" <br> El n&uacute;mero " +x+ " no est&aacute; en el array ");
}


</script>

engel lex

Código (javascript) [Seleccionar]
while (i<a.length || existe==0){
   if (x==a[i])
    {
    existe=1; // existe se torna 1 loop se repite
    auxp=i;
    }
   else {i++;} //existe nunca se torna 0, loop nunca termina
  }
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

amok

Cita de: engel lex en 27 Marzo 2017, 22:14 PM
Código (javascript) [Seleccionar]
while (i<a.length || existe==0){
   if (x==a[i])
    {
    existe=1; // existe se torna 1 loop se repite
    auxp=i;
    }
   else {i++;} //existe nunca se torna 0, loop nunca termina
  }


He cambiado

while (i<a.length && existe==0){

pero ahora siempre dice que el numero no está en el array

engel lex

te recomiendo usar el debugger del navegador, no es para nada complicado, seguro puedes conseguir un tutorial de como usar tu debugger (y si no sabes que es un debugger recomiendo primero leer una explicación de que son y como funcionan)

Código (javascript) [Seleccionar]
for (var i=0; i<a.length; i++){//i inicia en 0
  a[i]=parseInt(prompt("Introduzca numero",' '));
  document.write (a[i]+ " ");
  }
//actualmente i es igual a a.length porque fue la condicion de romper el for

  while (i<a.length && existe==0){ //i es igual a a.length, y como no ambas partes se cumplen se salta
   if (x==a[i])
    {
    existe=1;
    auxp=i;
    }
   else {i++;}
  }
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

amok

Cita de: engel lex en 28 Marzo 2017, 00:56 AM
te recomiendo usar el debugger del navegador, no es para nada complicado, seguro puedes conseguir un tutorial de como usar tu debugger (y si no sabes que es un debugger recomiendo primero leer una explicación de que son y como funcionan)

Código (javascript) [Seleccionar]
for (var i=0; i<a.length; i++){//i inicia en 0
  a[i]=parseInt(prompt("Introduzca numero",' '));
  document.write (a[i]+ " ");
  }
//actualmente i es igual a a.length porque fue la condicion de romper el for

  while (i<a.length && existe==0){ //i es igual a a.length, y como no ambas partes se cumplen se salta
   if (x==a[i])
    {
    existe=1;
    auxp=i;
    }
   else {i++;}
  }


Gracias por la recomendación compañero. Ya uso el Firebug que ayuda bastante.

Yo quiero que si i está incluida en x; existe sea igual a 1 y me vaya guardando el numero introducido.

por ello puse este código

while (i<a.length || existe==0)

y mientras existe=1 vaya recorriendo todos los números.

sino pues incrementar el número, pero claro esto hace que nunca termine el bucle.

Con ese else solo pretendo que se incremente el númro no que existe valga 1