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

Tarea #5 [solución]

Listado de fotos repetidas

Con frecuencia es difícil determinar si las fotos de la cámara ya fueron copiadas a las carpetas que forman el álbum de fotos, almacenado en el disco duro. En las cámaras, frecuentemente existe una carpeta 'DCIM' que contiene, en directorios separados, todas las fotos, cuyos nombres son consecutivos:

DCIM
 +==>IMS0001
 |   +-- dsc00200.jpg
 |   +-- dsc00201.jpg
 |   +-- dsc00202.jpg
 |   +-- dsc00203.jpg
 |   +-- dsc00204.jpg
 +==>IMS0002
 |   +-- dsc00205.jpg
 |   +-- dsc00206.jpg
 |   +-- dsc00207.jpg
 +==>IMS0002

En este ejemplo, la carpeta de fotos de la cámara se llama 'DCIM' y contiene 3 carpetas llamadas 'IMS0001', 'IMS0002' e 'IMS0002' en las que están almacenadas las fotos cuyos nombre son 'dsc00200.jpg' hasta 'dsc00207.jpg'.

Debido a la votatilidad de las memorias flash usadas para fotografiar, lo natural es guardar respaldo de las fotos en el disco duro. En muchas ocasiones conviene usar una carpeta para almacenar las fotos que fueron tomadas en una ocasión, como se muestra a continuación:

ALBUM
 +==>2015-03 Boda Juana
 |   +-- dsc00200.jpg
 |   +-- dsc00201.jpg
 |   +-- dsc00202.jpg
 |   +-- dsc00203.jpg
 |   +-- dsc00204.jpg
 +==>2015-05 Puerto
 |   +-- dsc00205.jpg
 |   +-- dsc00206.jpg
 |   +-- dsc00207.jpg
 +==>2015-06 Paso Canoas

A veces las carpetas del álbum de fotos se obtienen a partir de las carpetas de la cámara, pero con frecuencia ocurre que la fotos quedan reacomodadas en el álbum, como por ejemplo en este caso:

ALBUM
 +==>2015-03 Boda Juana
 |   +-- dsc00200.jpg
 |   +-- dsc00201.jpg
 |   +-- dsc00203.jpg
 |   +-- dsc00205.jpg
 +==>2015-06 Paso Canoas
 |   +-- dsc00202.jpg
 |   +-- dsc00204.jpg
 |   +-- dsc00206.jpg
 |   +-- dsc00207.jpg
 +==>etc ...

Además, en algunas ocasiones conviene cambiarle el nombre a las fotos para identificarlas adecuadamente:

ALBUM
 +==>2015-03 Boda Juana
 |   +-- dsc00200 Dele Beso.jpg
 |   +-- dsc00201 El ramo.jpg
 |   +-- dsc00203 Se cayó la suegra.jpg
 |   +-- dsc00205 Guaro Guaro.jpg
 +==>2015-06 Paso Canoas
 |   +-- dsc00202 Reloj.jpg
 |   +-- dsc00204 Copias Rolex.jpg
 |   +-- dsc00206 Casio de 2da.jpg
 |   +-- dsc00207 Omega.jpg
 +==>etc ...

Tanto renombrar como reacomodar de fotos hacen que, con el tiempo, sea difícil saber si ya todas las fotos fueron copiadas en el álbum, pues a veces tanta manipulación induce a errores que resulta en la pérdida de fotos importantes. En estos casos, es conveniente contar con un programa que pueda determinar, a partir del nombre de cada foto, si fue o no copiada al álbum de fotos del disco duro.

Su programa debe trabajar con 2 carpetas, por ejemplo 'J:\DCIM' y 'D:\LIB\ALBUM', para sacar de ellas 2 todos los nombres de archivos de fotos, que pueden estar en alguna de esas 2 carpetas o en sus sub-carpetas. Obtenga 2 listas con estos nombres de archivos y compárelos, de manera que obtenga 3 grupos: los que aparecen en ambos, los que aparecen solo en la primera carpeta y los que solo aparecen en la segunda. Para obtener los nombres de archivos use la bilioteca 'readDir' vista en clase y las listas std::list<> de la biblioteca estándar de C++.

Para manejar el caso en que algunas fotos hayan sido renombradas, separe en 2 partes el nombre de cada foto. Por ejemplo, el nombre "dsc00200 Dele Beso.jpg" quedaría separado en [ 'dsc00200' | "Dele Beso.jpg" ] de manera que la comparación de nombres de carpeta se pueda hacer utilizanado 'dsc00200' y desechando "Dele Beso.jpg". Recuerde ignorar las diferencias entre mayúsculas y minúsculas en los nombres de archivo.

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

[mailto:] Entrega de Tareas

Tiempo de entrega: 7 días
Modalidad: En parejas

Soluciones

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