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

Tarea #8 [solución]

Generación C++ de datos para el emparejador de cuestionarios

      Obtenga el archivo que contiene el padrón nacional en el sitio del Tribunal Supremo de Elecciones y úselo para generar los datos para el programa Emparejador.java que construyeron los estudiantes del cursos de Programación I para su tarea programada número 8. Use como base la solución Java del programa pero utilice SQLite para generar los archivos de datos. Finalmente, incluya en su programa C++ la exportación de los datos a archivos de texto en formato CSV.

      El archivo de encuestas que usted debe generar a partir de los nombres y apellidos del padrón nacional sirve 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 el programa Emparejador.java hay que usar 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, la clase losMejores.java se usa para guardar los índices de aquellas parejas que tengan mayor compatibilidad. La clase losMejores.java tiene al menos los siguientes métodos:

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

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

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] <> [/\]