Tarea Nº4: Diseño y Programación 
Orientado a Objeto

 

Tómbola en C++ y HTML

 

 

Alumnos:      Luis Báez                   Rol: 9991007-0

Carolina Mellings       Rol: 9904082-3

 

Profesor: Agustín González

Ayudante: Christian Lalanne

 

Introducción

 

El programa implementado permite utilizar la biblioteca estándar de plantillas STL de C++, algoritmos genéricos y además entregar una salida en HTML, a través de una CGI.

 

Implementación

 

Las exigencias de ésta tarea consiste en desarrollar un programa en C++ que reciba un archivo de texto por la entrada estándar y enviar por la salida estándar una permutación aleatoria de las líneas ingresadas. De manera que la salida corresponda a código HTML donde se ha agregado un número a cada línea.

Para llevar a cabo este programa se identificaron una serie de etapas que se fueron cumpliendo para completar los requerimientos descritos anteriormente, los cuales se detallan a continuación:

 

 

1.  Primero se desarrollo una aplicación simple que abriera un archivo de texto y lo mostrará por pantalla, dándole el nombre por defecto.

2.  Luego sobre la misma aplicación anterior se implementó para que en vez de abrir un archivo dado por defecto, lo recibiera como parámetro al momento de ejecutar el programa y se captura con argv[ ].

3.  En base a lo obtenido anteriormente, se implementó un contenedor vector de tipo string, de la librería STL, el cual se encargó de guardar cada uno de los ítems leídos desde el archivo de texto.

4.  Una vez que se tienen los ítems guardados en el vector de string, se procede a insertar el algoritmo random_suffle en la aplicación de manera que se le entregaran como parámetros el string de inicio y el string final del vector para que permutara los elementos del vector.

5.  Ahora que los elementos del vector ya han sido permutados es necesario implementar la salida, para ello se genera el código HTML, a través de un archivo .cgi.

 

Dificultades:

 

Una de las dificultades del programa implementado fue la aplicación del algoritmo random_shuffle, puesto que todos los ejemplos encontrados llamaban al algoritmo, pero no mencionaban la librería a la que pertenecía este, una vez identificada el problema se logró solucionar, sin embargo la salida de éste algoritmo era siempre la misma por lo que se tuvo que generar una semilla con srand() que capturara el tiempo el cual siempre varía, y así lograr que el resultado de la permutación siempre sea distinto.

Respecto de la salida de la aplicación se genera el archivo.cgi, pero se hallaron bastantes dificultades al momento de visualizar éste archivo, debido a que por un lado no se logró configurar el servidor web para que leyera el script o archivo.cgi, dentro de las pruebas realizadas arrojaba un error asociado a los permisos con que se contaba, por esta razón la solución para esta dificultad fue generar un archivo de salida de tipo .html llamado permutación.html, el cual se sobrescribe cada vez que se ejecuta la aplicación.

A pesar de la dificultad mencionada se incluye un archivo llamado index.html, el cual se encarga de llamar al script tómbola.cgi que corresponde al archivo generado por la ejecución de la aplicación propiamente tal.

 

Ejecución de la aplicación:

 

Para ejecutar la aplicación luego de compilar con el archivo makefile incluido, se procede a ejecutar la aplicación en linux con el siguiente comando: 

 

 

Como se puede ver al ingresar el archivo datos.txt como prueba, la aplicación retorna el código de la página html que mostrará los resultados y además guarda estos datos en un archivo llamado permutación.html, esto se debe a que se crea el archivo .cgi, sin embargo no se tenían los permisos para ejecutar el script que permite recibir los datos desde una página web y mostrarlos en ella.