Ver Mensaje Individual
  #5 (permalink)  
Antiguo 12/11/2011, 06:10
dismukes2003
 
Fecha de Ingreso: noviembre-2011
Mensajes: 7
Antigüedad: 13 años, 3 meses
Puntos: 0
Respuesta: bucle while no funciona

Hola de nuevo, y de nuevo gracias.

Efectivamente, yo ya había puesto una de las casillas que me indicaba el valor al final del bucle. La primera iteración siempre la ha hecho bien, pero luego le queda, para finalizar, cambiar unos valores, y aumentar el contador. Efectivamente eso no lo hacía, y si se pone una alerta al final de bucle no aparece, es decir, no acaba el bucle. Y eso es lo que no comprendo porque no encuentro lo que está mal. Por si acaso, pongo de nuevo el programa, con comentarios de lo que se va haciendo. no identifico qué es lo que hace que no cambie el contador al final, antes de recomenzar el bucle. El problema es que me pasa lo mismo si empleo for

<html>

<head>

<title>Test exacto de Fisher</title>
</head>
<body>
<script language="JavaScript">
/*funcion calculo factorial*/
function f(numero) {
if (numero > 1) {
return numero * f(numero - 1)
} else {
return numero
}
}
</script>
<script>
function Fisher(form)
{form.N.value = parseInt(form.a.value) + parseInt(form.b.value) + parseInt(form.c.value) + parseInt

(form.d.value);
/*decide si se aplica 1 o -1 a cada casilla*/
if (parseInt(form.b.value) < parseInt(form.a.value))
{form.z.value = -1}
else
{form.z.value = 1};
/*pone contador bucle y valor del test a cero*/
form.cont.value = 0;
form.P.value = 0
/*comienza bucle*/
while(form.cont.value < 3)
{form.c0.value = parseInt(form.a.value) + parseInt(form.c.value);
form.c1.value = parseInt(form.b.value) + parseInt(form.d.value);
form.r0.value = parseInt(form.a.value) + parseInt(form.b.value);
form.r1.value = parseInt(form.c.value) + parseInt(form.d.value);
/*hace el primer calculo del test (P)*/
form.P.value = parseFloat(form.P.value) + (f(form.r0.value) * f(form.r1.value) * f(form.c0.value) *

f(form.c1.value)) / (f(parseInt(form.a.value)) * f(parseInt(form.b.value)) * f(parseInt(form.c.value)) * f(parseInt(form.d.value)) * f(parseInt(form.N.value)));
/*cambia los valores de las casillas*/
parseInt(form.a.value) = parseInt(form.a.value)- form.z.value;
parseInt(form.b.value) = parseInt(form.b.value)+ parseInt(form.z.value);
parseInt(form.c.value) = parseInt(form.c.value)+ parseInt(form.z.value);
parseInt(form.d.value) = parseInt(form.d.value)- form.z.value;
/*deberia finalizar el bucle aqui, y aumentar el contador, para hacer otra iteracion, cosa que no hace*/
form.cont.value = form.cont.value ++;
alert(form.cont.value);
}
}
</script>

<form>

<h1 align="center"><font size="3" face="Verdana">Test exacto de Fisher</font></h1>
</i></font><font face="Arial" size="3"><span style="font-weight: 400">
Introduce el valor de la casilla a:</span><i> </i></font><font face="Arial"><i>
<font size="3"><input name="a" size="10"><br>
</font></i><span style="font-weight: 400"><font size="3">Introduce el valor de la casilla

b:</font></span><font size="3"> <input name="b" size="10"><br>
</font></i><span style="font-weight: 400"><font size="3">Introduce el valor de la casilla

c:</font></span><font size="3"> <input name="c" size="10"><br>
</font></i><span style="font-weight: 400"><font size="3">Introduce el valor de la casilla

d:</font></span><font size="3"> <input name="d" size="10"><br>

<br>
<input onclick="Fisher(this.form)" type="button" value="Calcula Test de Fisher "><br><br>
<input type="text" STYLE="color:#FF0000; font-size:10; font-weight:bold; background-color:#FFFFFF;"

name="N" size="10">
<input type="text" STYLE="color:#FF0000; font-size:10; font-weight:bold; background-color:#FFFFFF;"

name="c0" size="10">
<input type="text" STYLE="color:#FF0000; font-size:10; font-weight:bold; background-color:#FFFFFF;"

name="c1" size="10">
<input type="text" STYLE="color:#FF0000; font-size:10; font-weight:bold; background-color:#FFFFFF;"

name="r0" size="10">
<input type="text" STYLE="color:#FF0000; font-size:10; font-weight:bold; background-color:#FFFFFF;"

name="r1" size="10">
<input type="text" STYLE="color:#FF0000; font-size:10; font-weight:bold; background-color:#FFFFFF;"

name="z" size="10">
<input type="text" STYLE="color:#FF0000; font-size:10; font-weight:bold; background-color:#FFFFFF;"

name="cont" size="10"> <br><br> <br><br>
<font size="3"><input type="text" STYLE="color:#3B170B; font-weight:bold; background-color:#F7D357;"

name="P" size="10"><br>
<br>
<br>
<input type="reset" value="Borrar información">
</form>

</body>

</html>