Ver Mensaje Individual
  #1 (permalink)  
Antiguo 19/06/2010, 23:26
psm2009b
 
Fecha de Ingreso: agosto-2009
Mensajes: 7
Antigüedad: 15 años, 3 meses
Puntos: 0
Cálculo de promedio con opciones avanzadas

Estimados, tengo el siguiente código que con algunas investigaciones por internet pude armar, el problema está en que requiero que éste sea capaz de:
1. Saber cuántas notas se han ingresado, puesto que el formulario consta de 7 campos de texto donde se ingresan las mismas, pero no siempre van a haber 7 notas, pueden haber menos.
2. Que el promedio se aproxime, porque deja la nota sin aproximar.
3. Si se pudiera resumir un poco el código sería genial, pero esto último no me interesa mucho.

El código es:

<html>

<head>
<meta name="GENERATOR" content="Microsoft FrontPage 6.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Pagina nueva 2</title>
<script type='text/javascript'>
function promedio(){
var p1 = document.editar.p1.value;
var p2 = document.editar.p2.value;
var p3 = document.editar.p3.value;
var p4 = document.editar.p4.value;
var p5 = document.editar.p5.value;
var p6 = document.editar.p6.value;
var p7 = document.editar.p7.value;
var p1 = (!isNaN(p1) && p1 != '')? Number(p1): 0;
var p2 = (!isNaN(p2) && p2 != '')? Number(p2): 0;
var p3 = (!isNaN(p3) && p3 != '')? Number(p3): 0;
var p4 = (!isNaN(p4) && p4 != '')? Number(p4): 0;
var p5 = (!isNaN(p5) && p5 != '')? Number(p5): 0;
var p6 = (!isNaN(p6) && p6 != '')? Number(p6): 0;
var p7 = (!isNaN(p7) && p7 != '')? Number(p7): 0;

if (p1 != ""){
document.editar.pg.value = p1;
}
if (p1 && p2 != ""){
var suma1 = p1 + p2;
var pg = Number(suma1 / 2);
pg = pg.toFixed(3);
pg = pg.substring(0, pg.length - 2);
document.editar.pg.value = pg
}
if (p1 && p2 && p3 != ""){
var suma2 = p1 + p2 + p3;
var pg = Number(suma2 / 3);
pg = pg.toFixed(3);
pg = pg.substring(0, pg.length - 2);
document.editar.pg.value = pg
}
if (p1 && p2 && p3 && p4 != ""){
var suma3 = p1 + p2 + p3 + p4;
var pg = Number(suma3 / 4);
pg = pg.toFixed(3);
pg = pg.substring(0, pg.length - 2);
document.editar.pg.value = pg
}
if (p1 && p2 && p3 && p4 && p5 != ""){
var suma4 = p1 + p2 + p3 + p4 + p5;
var pg = Number(suma4 / 5);
pg = pg.toFixed(3);
pg = pg.substring(0, pg.length - 2);
document.editar.pg.value = pg
}
if (p1 && p2 && p3 && p4 && p5 && p6 != ""){
var suma5 = p1 + p2 + p3 + p4 + p5 + p6;
var pg = Number(suma5 / 6);
pg = pg.toFixed(3);
pg = pg.substring(0, pg.length - 2);
document.editar.pg.value = pg
}
if (p1 && p2 && p3 && p4 && p5 && p6 && p7 != ""){
var suma6 = p1 + p2 + p3 + p4 + p5 + p6 + p7;
var pg = Number(suma6 / 7);
pg = pg.toFixed(3);
pg = pg.substring(0, pg.length - 2);
document.editar.pg.value = pg
}
}
</script>
</head>

<body>
<form name="editar">
<input type="text" name="p1" value="" size="4" onchange="promedio()" />
<input type="text" name="p2" value="" size="4" onchange="promedio()" />
<input type="text" name="p3" value="" size="4" onchange="promedio()" />
<input type="text" name="p4" value="" size="4" onchange="promedio()" />
<input type="text" name="p5" value="" size="4" onchange="promedio()" />
<input type="text" name="p6" value="" size="4" onchange="promedio()" />
<input type="text" name="p7" value="" size="4" onchange="promedio()" />
<input type="text" name="pg" value="" size="4" />
</form>
</body>

</html>

Espero puedan ayudarme.