Foros del Web » Programando para Internet » Javascript »

Corregir un examen tipo test

Estas en el tema de Corregir un examen tipo test en el foro de Javascript en Foros del Web. ¡Hola! Tengo que corregir un examen tipo test en el que se tienen varias preguntas con cuatro respuestas correctas. Hay que tener en cuenta si ...
  #1 (permalink)  
Antiguo 03/12/2011, 13:09
 
Fecha de Ingreso: diciembre-2011
Mensajes: 7
Antigüedad: 12 años, 4 meses
Puntos: 0
Pregunta Corregir un examen tipo test

¡Hola! Tengo que corregir un examen tipo test en el que se tienen varias preguntas con cuatro respuestas correctas. Hay que tener en cuenta si se acierta la respuesta, se falla o se deja en blanco, según una de las tres opciones se da una puntuación u otra: dos puntos si se acierta, un punto menos si se falla y medio punto menos si se deja en blanco. Todo tiene que hacerse de forma genérica, de modo que si se quiere modificar el formulario con más preguntas que sólo haya que cambiar el valor de un par de variables, no haya que añadir más código.

He escrito un código anidando fors y ifs, no sé si es la solución más adecuada.

function corregir(){
var numeroPreguntas=4;
var nombreid = new Array();
var correctas=["p12","p24","p33","p41"];
var cont=0, contAcierto=0, contFallo=0, contBlanco=0, contResultado=0;

for (pregun=1;pregun<=numeroPreguntas;pregun++)
{
for (respuesta=1;respuesta<=4;respuesta++)
{
nombreid[cont]="p"+pregun+respuesta; // me creo las ids de los radios a comprobar
var indice=nombreid[cont];
var seleccionada=document.getElementById(indice).check ed;
if(seleccionada){
for(i=0;i<correctas.length;i++)
{
if(indice==correctas[i])
{
alert("correcta"+" indice"+indice+" correctas"+correctas[i]);
contAcierto++;
contResultado=contResultado+2;
}
else{
contFallo++;
contResultado=contResultado-1;

}
}

}
else
{
contBlanco++;
contResultado-0,5;
}
cont++;
}
alert("aciertos "+contAcierto+"resultado "+contResultado+"en blanco "+contBlanco);
}

}


y el HTML es:



<FORM name="Preguntas">

<p>
<!-- Primera pregunta -->
1.- Este es el enunciado de la primera pregunta del test. </p>

<p>
<input type="radio" name="pregunta1" id="p11" value="A" /> Texto de la respuesta A. </p> <p>
<input type="radio" name="pregunta1" id="p12" value="B" /> Texto de la respuesta B. </p> <p>
<input type="radio" name="pregunta1" id="p13" value="C" /> Texto de la respuesta C. </p> <p>
<input type="radio" name="pregunta1" id="p14" value="D" /> Texto de la respuesta D. </p>
<p></p>


<!-- Segunda pregunta -->
2.- Este es el enunciado de la segunda pregunta del test. </p>

<p>
<input type="radio" name="pregunta2" id="p21" value="A" /> Texto de la respuesta A. </p> <p>
<input type="radio" name="pregunta2" id="p22" value="B" /> Texto de la respuesta B. </p> <p>
<input type="radio" name="pregunta2" id="p23" value="C" /> Texto de la respuesta C. </p> <p>
<input type="radio" name="pregunta2" id="p24" value="D" /> Texto de la respuesta D. </p>
<p></p>


<!-- Tercera pregunta -->
3.- Este es el enunciado de la tercera pregunta del test. </p>

<p>
<input type="radio" name="pregunta3" id="p31" value="A" /> Texto de la respuesta A. </p> <p>
<input type="radio" name="pregunta3" id="p32" value="B" /> Texto de la respuesta B. </p> <p>
<input type="radio" name="pregunta3" id="p33" value="C" /> Texto de la respuesta C. </p> <p>
<input type="radio" name="pregunta3" id="p34" value="D" /> Texto de la respuesta D. </p>
<p></p>


</FORM>


<FORM name="boton">
<input type="button" name="boton" value=" CORREGIR " onClick="corregir()"/>
</FORM>


<br><br>


El problema que al hacer las comprobaciones dentro del for, me suma más respuesta falladas y en blanco de las que hay en realidad.

¿Alguien sabe cómo solucionarlo?¿Alguna idea de cómo hacer el código más eficiente?

Muchas gracias, sé que es poco rollo de leer todo lo que he puesto

Última edición por julili; 08/12/2011 a las 13:41

Etiquetas: corregir, examen, formulario, html, input, test, tipo, botones
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:26.