Foros del Web » Programando para Internet » Javascript »

Problemas para leer arrays

Estas en el tema de Problemas para leer arrays en el foro de Javascript en Foros del Web. Antes de nada buenas a todos. Tengo un problema que no se resolver. tengo un array x(1)=a hasta x(40)=c Es un examen tipo test de ...
  #1 (permalink)  
Antiguo 25/11/2012, 08:37
 
Fecha de Ingreso: noviembre-2012
Ubicación: Almeria
Mensajes: 5
Antigüedad: 11 años, 5 meses
Puntos: 0
Problemas para leer arrays

Antes de nada buenas a todos.
Tengo un problema que no se resolver. tengo un array x(1)=a hasta x(40)=c
Es un examen tipo test de 40 preguntas y para poder aprobar el examen hay varias condiciones que son:
1) no fallar mas de 12 preguntas en el total del examen
2)de la pregunta 10 a la 20 solo se puede fallar 4.
3)de la pregunta 5 a la 9 solo dos fallos se permiten.
todo ello quiero que aparezca en un alert diciendo si ha aprobado o suspendido y los motivos por lo que no ha aprobado.
El primer condicionante es facil pero el problema lo tengo en los otros dos
Tengo un scrip que me lo corrige y me dice las coorecta y fallos totales, pero estas condiciones no se hacerla no se como leer entre esos intervalos.
gracias.
  #2 (permalink)  
Antiguo 25/11/2012, 10:05
 
Fecha de Ingreso: noviembre-2012
Mensajes: 32
Antigüedad: 11 años, 5 meses
Puntos: 3
Respuesta: Problemas para leer arrays

¿como compruebas el primer condicionante, ¿en un funcion?, a mi se me ocurre recorrer el array, pero si no pones mas información, no se que estas haciendo. Me parece muy sencillo y supongo que no lo debe ser si pides ayuda al foro. Pon mas información.
Que hay en el array?, de donde viene el array?, y supongo que utilizas javascript?
  #3 (permalink)  
Antiguo 25/11/2012, 10:41
 
Fecha de Ingreso: noviembre-2012
Ubicación: Almeria
Mensajes: 5
Antigüedad: 11 años, 5 meses
Puntos: 0
espero que lo entiendas: respuesta arrays

Esto es un archivo .js
lo uso para que me corriga el examen
El examen lo tengo en un html logicamente que llama a traves de las funsiones al .js
Una vez que se corrige se abre una nueva ventana html donde muestra los resultados y
ahi es donde quiero que con un alert se determine si a aprobado o suspendido
y en ese html es donde tengo un script y recorro los resultados, pero para determinar
en un intervalo del array las condiciones que puse no lo se hacer.

Se un poco de javascript pero no soy experto estoy aprendiendo ahora un poco mas y
tengo algunas lagunas.
Espero que lo hayas entendido sino te envio los tres ficheros haber si me aclaras algo mas.
gracias de ante mano.
//////////////////////////////////////

ESTO ESTA EN UN ARCHIVO.JS
///////////////////////////////////////


var totalquestions=40

//Introduce las soluciones correspondientes a cada pregunta:
var correctchoices=new Array()
correctchoices[1]='c' //Pregunta 1 solucion
correctchoices[2]='a' //Pregunta 2 solucion, y sigue.
correctchoices[3]='d'
correctchoices[4]='d'
correctchoices[5]='c'
correctchoices[6]='c'
correctchoices[7]='c'
correctchoices[8]='c'
correctchoices[9]='d'
correctchoices[10]='c'
correctchoices[11]='b'
correctchoices[12]='d'
correctchoices[13]='b'
correctchoices[14]='c'
correctchoices[15]='b'
correctchoices[16]='a'
correctchoices[17]='b'
correctchoices[18]='c'
correctchoices[19]='c'
correctchoices[20]='c'
correctchoices[21]='d'
correctchoices[22]='a'
correctchoices[23]='d'
correctchoices[24]='b'
correctchoices[25]='a'
correctchoices[26]='c'
correctchoices[27]='d'
correctchoices[28]='b'
correctchoices[29]='c'
correctchoices[30]='d'
correctchoices[31]='b'
correctchoices[32]='a'
correctchoices[33]='c'
correctchoices[34]='c'
correctchoices[35]='d'
correctchoices[36]='a'
correctchoices[37]='c'
correctchoices[38]='b'
correctchoices[39]='b'
correctchoices[40]='c'

/////No edite más allá de aquí//////////////////////////

function gradeit(){
var incorrect=null
for (q=1;q<=totalquestions;q++){
var thequestion=eval("document.myquiz.question"+q)
for (c=0;c<thequestion.length;c++){
if (thequestion[c].checked==true)
actualchoices[q]=thequestion[c].value
}

if (actualchoices[q]!=correctchoices[q]){ //procesar una elección incorrecta
if (incorrect==null)
incorrect=q
else
incorrect+="/"+q
}
}

if (incorrect==null)
incorrect="a/b"
document.cookie='q='+incorrect
if (document.cookie=='')
alert("Su navegador no acepta cookies. Por favor, ajuste la configuración del navegador.")
else
window.location="results.htm"
}

//funsion que muestra la soluciones y la imprime en una ventana pop.
function showsolution(){
var win2=window.open("","win2","width=200,height=350, scrollbars")
win2.focus()
win2.document.open()
win2.document.write('<title>Soluciones</title>')
win2.document.write('<body bgcolor="#FFFFFF">')
win2.document.write('<center><h3>Respuesta de su examen</h3></center>')
win2.document.write('<center><font face="Arial">')
for (i=1;i<=totalquestions;i++){
for (temp=0;temp<incorrect.length;temp++){
if (i==incorrect[temp])
wrong=1
}
if (wrong==1){
win2.document.write("Incorrecta "+i+" = "+correctchoices[i].fontcolor("red")+"<br>")
wrong=0
}
else
win2.document.write("Correcta "+i+" = "+correctchoices[i].fontcolor("blue")+"<br>")
}
win2.document.write('</center></font>')
win2.document.write("<h5>Nota: Las respuestas incorrectas estan en rojo y las correctas en azul.</h5>")
win2.document.close()


/////////////////////////////////

ESTE SCRIPT LO TENGO EN UN HTML DONDE SE MUESTRAN LOS RESULTADOS

///////////////////////////////////////

<script>

var wrong=0
for (e=0;e<=2;e++)
document.result[e].value=""

var results=document.cookie.split(";")
for (n=0;n<=results.length-1;n++){
if (results[n].charAt(1)=='q')
parse=n

}

var incorrect=results[parse].split("=")
incorrect=incorrect[1].split("/")
if (incorrect[incorrect.length-1]=='b')
incorrect=""

document.result[0].value=totalquestions-incorrect.length+" de "+totalquestions
document.result[2].value=(totalquestions-incorrect.length)/totalquestions*100+"%"
for (temp=0;temp<incorrect.length;temp++)
document.result[1].value+=incorrect[temp]+", "
//var posicion=correctchoices.indexOf(correctchoices[8])
//alert (incorrect)

if (incorrect.length > 12){
alert("¡Lo siento usted ha suspendido intentalo de nuevo!")
}else{
alert("Enhora buena usted ha aprobado")
}

</script>
  #4 (permalink)  
Antiguo 25/11/2012, 11:01
 
Fecha de Ingreso: noviembre-2012
Mensajes: 32
Antigüedad: 11 años, 5 meses
Puntos: 3
Respuesta: Problemas para leer arrays

Bufff, solo empleas javascript?
Vuelvo a insistir, si sabes recorrer el array entero para sumar los aciertos, que te cuesta recorrer las keys que son condicionantes y excluir (crea una variable que sea $control y que cuando se incumpla le de por suspenso).

Vaya mareo de script, esto si le añades mucho mas codigo pronto será ilegible.

Es que no lo he puesto porque me parece obvio, pero crea un bucle for(i=10;i<20;i++){} y conseguiras que te recorra del item 10 al 19 y así sucesivamente
  #5 (permalink)  
Antiguo 25/11/2012, 11:24
 
Fecha de Ingreso: noviembre-2012
Ubicación: Almeria
Mensajes: 5
Antigüedad: 11 años, 5 meses
Puntos: 0
Respuesta: Problemas para leer arrays

Si eso es lo que hay que hacer pero lo he intentado de varias formas incluso creando un nuevo array con esos intervalos pero no me daba bien voy a volver a corregir lo que he echo e intentarlo de nuevo. gracias de todas formas.
  #6 (permalink)  
Antiguo 25/11/2012, 15:07
Avatar de chwc  
Fecha de Ingreso: julio-2008
Ubicación: Buenos Aires ! :D
Mensajes: 814
Antigüedad: 15 años, 9 meses
Puntos: 103
Respuesta: Problemas para leer arrays

Hola, un consejo nada mas, puedes crear los arrays de esta forma
Código Javascript:
Ver original
  1. var respuestas = ['a','b','a','c'];
  2. //respuestas[0] => 'a'
  3. //respuestas[1] => 'b'  etc...


asi no es tanto problema, recuerda que los arrays no comienzan en 1, sinó en 0

un saludo !
  #7 (permalink)  
Antiguo 25/11/2012, 18:25
(Desactivado)
 
Fecha de Ingreso: noviembre-2002
Ubicación: Ciudad Autónoma de Buenos Aires
Mensajes: 2.367
Antigüedad: 21 años, 5 meses
Puntos: 317
Respuesta: Problemas para leer arrays

Algunos comentarios.
Decir que sabés poco de javascript no es excusa. Porque claramente estás copiando y pegando un código que encontraste por ahí, no lo entendés y querés que te lo arreglemos nosotros. No estás planteando una duda sobre tu modificación. Porque no lo modificaste, ni siquiera sabés HTML, porque ya hubieses corregido las etiquetas que están obsoletas. Ese ejemplo lo habrás sacado de algún sitio viejísimo.

Por suerte, lo que estás planteando es muy fácil de hacer, pero vas a tener que aprender un poco. No te lo pienso dar hecho, porque si estoy posteando es porque me parece un buen ejercicio para estudiar ya no manejo de arrays, sino manejo de cadenas con un fin práctico.

Vamos a replantear el asunto. Hay 24 preguntas, cada una puede devolver "bien" (1) o "mal" (0). Una vez respondidas, en vez de guardarlas en un array, se guardan en una cadena. Algo como

var alfa = '110100111001010011101000';

que tiene las respuestas buenas y malas en el mismo orden de las preguntas.
No explico cómo se crea esta cadena, porque es evidente y básico. Está en cualquier tutorial y ya lo hicimos mil veces en estos Foros.

Ahora supongamos que hay una serie que tiene más importancia que el resto de las preguntas, y es la que va desde la 10ª a la 15ª inclusive. Si de éstas no se responde correctamente al menos 2, ya está afuera.
Si pasa esta etapa, entonces sí se cuentan que del total haya respondido al menos 12. Si no alcanza, tampoco pasa, y si lo logra, entonces se lo aprueba.

Código:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<html>
<head>
<meta http-equiv=Content-Type content="text/html; charset=utf-8">
<title></title>
<script type="text/javascript">

//                   001010         respuestas correctas entre 10ª y 15ª incl.
var alfa = '110100111001010011101000';
//          110100111      011101000 respuestas correctas hasta 9ª y desde 16ª

var bravo = new RegExp("1","g");
var charly = alfa.substring(9,15); alert(charly)
var delta = charly.match(bravo); alert(delta);
var eco = alfa.match(bravo); alert(eco);

if(delta.length < 2) alert('Tiene sólo '+delta.length+' respuestas correctas entre las importantes de un total de 2.');

else if(eco.length < 12) alert('Tiene sólo '+eco.length+' respuestas correctas del total de 12.');

else alert('Aprobó con '+eco.length+' respuestas correctas.');

</script>
</html>
Pueden jugar con los valores (unos y ceros) sin cambiar la cantidad, obvio. Para eso dejé unos comentarios a modo de guía, para que vean más claramente donde modificar.
En el ejemplo que puse, aprueba raspando.
  #8 (permalink)  
Antiguo 26/11/2012, 13:28
 
Fecha de Ingreso: noviembre-2012
Ubicación: Almeria
Mensajes: 5
Antigüedad: 11 años, 5 meses
Puntos: 0
Respuesta: Problemas para leer arrays

Hola no he podido contestar antes a las alusiones del SR. FUROYA.
Solo te voy a decir que empecé a estudiar informática en el año 78 y termine la carrera en el 83 cuando los ordenadores eran de madera, bueno y además mi profesión fue por otros derroteros a la informática aunque siempre me ha gustado y me sigue gustando, cuando termine, el lenguaje javascript ni estaba en proyecto lo que se es que me lo he tenido que estudiar yo solito y como no vivo de ello pues, claro, no le dedico todo el tiempo ni empeño que se requiere para dominarlo, se hacer lo básico se que es un “for” un “array” un “if” etc…etc... Por otro lado cuando estudiaba me enseñaron que si me compraba un ordenador no tenia que programarme el sistema operativo ya habían otros muchos que hicieron aunque podía crearme alguna API fueran necesarias incluso modificar algunas para adaptarlas a las necesidades porque otros ya lo había hecho, y eso es lo que he hecho con el script de los test lo busque en internet me pareció que se podía adaptar a lo que necesitaba y con algunas modificaciones me podía ser útil y eso es lo que pretendía hacer en ningún momento he pedido que me lo hagan solo que tengo mis dudas para hacer lo que yo quiero y también otro handica es la estructura del script que a mi me es útil porque las respuestas no las tengo en el mismo html del test. Bueno lo que pretendía es que me dieran un enfoque de como plantear el problema yo se que para el que sabe probablemente es fácil, pero por eso pedía ayuda no lo hago para que trabajen para mi (y luego yo lo venda y me haga multimillonario) no es eso es un tema de amor propio y quería hacerlo yo con una pequeña ayuda, yo se que es fácil y tengo amigos que se lo puedo pedir y me lo hacen pero quería hacerlo yo.
Bueno gracias de todas forma si de verdad supiera no preguntaba como es obvio.
Un saludo.
  #9 (permalink)  
Antiguo 26/11/2012, 14:07
 
Fecha de Ingreso: noviembre-2012
Mensajes: 32
Antigüedad: 11 años, 5 meses
Puntos: 3
Respuesta: Problemas para leer arrays

Buenos dias,

me parece que antes de seguir valiendote de javascript, deberías intentar meterte en el entorno completo. PHP, Mysql y javascript (por descontado html). Con bases de datos y php podrias ejecutar scripts que te permitieran alamcenar datos en bases de datos mysql por ejemplo, que serian mejor de manejar y así no tendrias esos scripts tan largos y pedregosos. Podrias programar una interface para manipular las variables, y así por ejemplo no tendrias que entrar en los scripts para rectificar las soluciones de los test, te bastaria un script para todos los test.

Saludos
  #10 (permalink)  
Antiguo 26/11/2012, 20:27
(Desactivado)
 
Fecha de Ingreso: noviembre-2002
Ubicación: Ciudad Autónoma de Buenos Aires
Mensajes: 2.367
Antigüedad: 21 años, 5 meses
Puntos: 317
Respuesta: Problemas para leer arrays

vimon: es evidente que trabaja con lenguajes de servidor. El array correctchoices lo envía PHP o similar; no va a estar en el JS para que todos lo vean.
Y es cierto que algo así debería estar todo (excepto el formulario final) en una base de datos donde después se harán los cálculos. Por eso es que no podemos tomar en serio el post.
Lo que no significa que no podamos aprovecharlo para mostrar ejemplos didácticos, para estudiar un poco.



habbato: lo que aludo es lo que se ve en tu mensaje. Tu biografía es lo que vos contás. Y no encaja demasiado con los hechos.
No modificaste nada. Lo que pusiste no tiene utilidad práctica, y no lo estás ofreciendo para que los novatos experimenten. Ese criterio ridículo de "encuentro algo que me parece que puedo usar, pero cómo no sé adaptarlo pregunto en un Foro para que me orienten diciéndome cosas de las que no entiendo media palabra, y al final alguno se cansa y lo hace por mí" te va a funcionar si no te topás con alguien que realmente entiende. Y que postea en este Foro porque se tomó el trabajo de aprender antes, aunque su profesión haya ido por otros derroteros distintos a la informática.

Ya tenés tu "pequeña ayuda", y no veo que hayás hecho nada más que venir a quejarte.
Pero insisto, es solamente para empezar a aprender. Después tirás todo y lo terminás como se debe, con los lenguajes y métodos correspondientes.

Relacionar 2 opciones (checkbox) y dar un mensaje de correcto ó incorrecto

Guardar en disco opciones de seleccion

Guardar los valores de un formulario de una página web


P.D.: Y la próxima vez meté el código entre etiquetas de código. De ninguna manera va suelto en medio del mensaje.

(Ah!, y tampoco entre etiquetas de cita.)
  #11 (permalink)  
Antiguo 27/11/2012, 08:47
 
Fecha de Ingreso: noviembre-2012
Ubicación: Almeria
Mensajes: 5
Antigüedad: 11 años, 5 meses
Puntos: 0
Respuesta: Problemas para leer arrays

Hola a todos los que están interesados en el tema aunque sea de forma critica, creo que se aprende con todo esto.
Antes de nada voy a poner lo que dice el correo que me enviaron al hacerme el registro en el foro.

"Foros Foros del Web [email protected] a través de mail11.us4.mandrillapp.com
25 nov (hace 2 días)

para mí
Hoy habbato se convirtió en un nuevo amigo de Foros del Web.

Nuestro espacio ha ayudado a miles de profesionales y entusiastas de la web a aportar su talento a nuestro mundo digital. Si podemos ayudarte a crecer, formarte o compartir tu trabajo, solo tienes que avisarnos por el foro.

Y recuerda que somos gente social. En twitter nos encuentras en @forosdelweb. Con nuestro nombre puedes buscarnos y obsequiarnos un like, un +1 o mejor aún, enlazarnos desde tus proyectos."


Bueno la verdad que me agrado y pense, esto motiva, pienso a lo mejor me ayudaran de verdad.
A FUROYA le quería aclarar, no pienso que seas despectivo con tu actitud ni nada solo que a veces hay personas que actúan de buena fe, sin pensar que estos "novatos" me van a resolver la papeleta.

No entiendo muy bien esa frase " Tu biografía es lo que vos contás. Y no encaja demasiado con los hechos." mi biografía es mucho mas extensa que esa tengo 55 años tres carreras universitarias soy Capitán de la Marina Mercante, Informático (Obsoleto) y Arquitecto, en la actualidad soy funcionario en España tengo una academia náutica y comparto con mis alumnos una web http://www.testnauticos.es que es completamente gratis y sin publicidad, y ahi veras porque me interesa resolver informaticamente este tema que planteaba, ahi veras que ese código que dices que no sirve para nada esta operativo y he modificado lo que he podido y lo que he sabido y de verdad no quiero polemizar mas este tema solo quiero que piensen que no he ido con malas intenciones a este foro, solo pretendía si alguien me podia echar una mano a un problema que tenia, que por cierto no es muy complicado sino que la estructura del código lo complica un poco, de como esta estructurado, creo que VIMON me ha dichos algunas cosas positivas, pero como yo no negocio con esto la verdad que no tengo mucha intención el cambiar todo el sistema. Un saludo a todos los del foro y es importante que esto funciones así, hay muchas personas que están interesados en estos temas.

Etiquetas: arrays
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 08:07.