Universidad de Costa Rica
Escuela de Ciencias de la
Computación e Informática
Profesor Adolfo Di Mare
CI-1101
II Semestre 2010
[<=] [home] [<>] [\/] [=>]
CI-1101 Programación 1

Tarea #8 [solución]

Emparejador de cuestionarios

      Utilice el archivo de encuestas generado a partir los nombres y apellidos del padrón nacional para determinar cuáles son las personas más compatibles. Cada pregunta en la encuesta tiene 6 posibles respuestas:

[0] → No sabe, no responde
[1] → Totalemente negativo
[2] → Un poco negativo
[3] → En la mitad
[4] → Un poco positivo
[5] → Totalemente positivo

      Al construir su programa Emparejador.java use la clase pregunta.java para almacenar en una lista vector las preguntas del cuestionario, las que están grabadas en formato CSV en el archivo "cuestionario.txt". Las respuestas al cuestionario están en el archivo "encuesta.txt", grabado también en formato CSV.

      La cantidad de respuestas grabadas en el archivo "encuesta.txt" es muy grande, más allá de de varios miles. Para almacenar estos valores, usted debe utilizar un objeto contenedor que permita agregar valores eficientemente, como es el caso de la clase ArrayList que tiene su método add() para agregar nuevos valores con buen eficiencia.

      En la memoria del computador es posible almacenar objetos enormes, pero es muy difícil manipular una matriz cuadrada que tiene un millón de renglones. Por eso, en lugar de almacenar la gran matriz, usted construirá su clase losMejores.java, en donde usted guardará los índices de aquellas parejas que tengan mayor compatibilidad.

      Incluya al menos los siguientes métodos en su clase losMejores.java:

agregue(i,j, cmptbl):
Usa el grado de compatibilidad cmptbl para guardar aquellas parejas (i,j) que tienen mayor compatibilidad.
demeIzquierdo(n):
Retorna el índice izquierdo i de la pareja (i,j) que tiene la compatibilidad de en posicipon n. La pareja más compatible es la que está en la posición 0 de compatibilidad.
demeDerecho(n):
Retorna el índice derecho j de la pareja (i,j) que tiene la compatibilidad de en posicipon n.

      Para calcular el índice de compatibilidad calcule la suma de los cuadrados de las diferencias de las repuestas. Si alguna de las 2 respuesta es la opción [0] (no sabe o no responde) use el valor 2 al calcular la compatibilidad. Por ejemplo, la compatibilidad de estas 2 respuestas al cuestionario es 70:

     1,  0,  0,  3,  1,  1,  5,  5,  1,  0,  4,  0
     4,  1,  4,  5,  0,  1,  1,  1,  1,  0,  3,  1
    --- --- --- --- --- --- --- --- --- --- --- ---
    -3   2   2  -2   2   0   4   4   0   2   1   2

     9   4   4   4   4   0  16  16   0   4   1   4 ==> 66

      Su programa debe procesar todos los cuestionarios y producir, al final, la lista de las 25 parejas que tienen mayor compatibilidad.

Consulta:
Profe: ¿Puedo usar la clase Vector en lugar de ArrayList?
Respuesta:
Deben almacenar todas las encuestas en un contenedor ArrayList. Pueden usar lo que más les convenga para implementar su objeto losMejores.java.
Consulta:
Profe: ¿Por qué hay nombres tan raros en la encuesta?
Respuesta:
Esos nombres y apellidos aparecen en el padrón nacional. Costa Rica es una tierra para muchos.

      Entregue su tarea por correo electrónico, como lo hizo anteriormente.

[mailto:] Entrega de Tareas

Tiempo de entrega: 1 semana
Modalidad: En parejas

Soluciones

[mailto:] Adolfo Di Mare <adolfo@di-mare.com>.
Copyright © 2010
Derechos de autor reservados © 2010
[home] <> [/\]