Hola: Soy nuevo en el foro, y poco experto en Javascript. Necesito hacer un programa de calculo del test de fisher, una prueba estadística. Funciona, pero el bucle while... solamente funciona la primera vuelta, a pesar de que no cumple la condición de fin del bucle. Por mas vueltas que le doy no veo donde está el fallo. Envío el programa, por si alguien más experto puede echarme una mano.
Gracias
dismukes2003
P.D. Algunas casillas que salen en pantalla son solamente para seguir el curso del programa. Luego se suprimirían. Poniendo como datos a, b, c, y d, 3, 5, 4, y 2, respectivamente, el resultado si fuera bien, debería ser 0.29604...
<html>
<head>
<title>Test exacto de Fisher</title>
</head>
<body>
<script language="JavaScript">
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);
if (parseInt(form.b.value) < parseInt(form.a.value))
{form.z.value = -1}
else
{form.z.value = 1};
form.cont.value =(parseInt(form.a.value)*parseInt(form.b.value)*pa rseInt(form.c.value)*parseInt(form.d.value));
form.P.value = 0
while(form.cont.value > parseInt(0))
{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);
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)));
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;
form.cont.value = (parseInt(form.a.value)*parseInt(form.b.value)*par seInt(form.c.value)*parseInt(form.d.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>