Final ICom-2002

Nota: Respete los prototipos de las funciones y las estructuras.

  1. Dada la siguiente estructura de datos que permite representar tiempos,
    
         typedef struct {
            int anio, mes, dia, hora, minuto, segundo;
         } Tiempo;
         
    implemente las siguientes funciones:
    1. int compara_tiempos( Tiempo *t1, Timepo * t2);
      que retorna:
      1 si t1 es anterior a t2
      0 si t1 es igual a t2
      -1 si t1 es posterior a t2
    2. void imprime_tiempo( Tiempo t );
      que imprime el contenido de la estructura t con el siguiente formato: "dia/mes/anio hora:minuto:segundo" (por ej: "3/8/1974 18:23:59").
  2. Para representar un archivo se escogió la siguiente estructura:
    
         typedef struct {
            char * nombre;
            Tiempo ultima_mod;
         } Archivo;
         
    donde nombre es un string que contiene el nombre del archivo y ultima_mod es una estructura Tiempo que almacena la fecha y hora en que se modificó por última vez el archivo. Dado un arreglo lista de n archivos, implemente funciones para ordenarlo alfanuméricamente y temporalmente de acuerdo a los siguientes prototipos:
    1. void ordena_alfa( Archivo * lista, int n );
      (utilice la función strcmp de la biblioteca estandar para comparar los nombres de los archivos).
    2. void ordena_temporal( Tiempo t );
      (utilice la función compara_tiempos del ejercicio 1.a para comparar los tiempos de última modificación de los archivos).
  3. Para representar un directorio se escogió la siguiente estructura:
    
         typedef struct {
            char * nombre;
            int num_archivos;
            Archivo * arch;
            int num_subdirs;
            Directorio * subdir;
         } Directorio;
         
    donde nombre es un string con el nombre del directorio, arch es un arreglo con los archivos que contiene el directorio y num_archivos es su tamaño, subdir es un arreglo que contiene los subdirectorios y num_subdirs es su tamaño (Notar que esta estructura es en cierto sentido recursiva: un Direcotorio contiene un arreglo de Directorios y cada uno a su vez ...).
    Implemente las siguientes funciones (que son recursivas):
    1. void ordena_alfa( Directorio * dir);
      utilizando la función del ejercicio 2.a ordenar alfanuméricamente el arreglo arch para el directorio y luego hacer lo propio con cada subdirectorio.
    2. void ordena_tempo( Directorio * dir);
      utilizando la función del ejercicio 2.b ordenar temporalmente el arreglo arch para el directorio y luego hacer lo propio con cada subdirectorio.
    3. void imprime_ordena_alfa( Directorio * dir);
      debe imprimir primero el nombre del directorio y después los archivos que contiene ordenados alfanuméricamente y por último el contenido de cada subdirectorio de la misma manera.
    4. void imprime_ordena_tempo( Directorio * dir);
      debe imprimir primero el nombre del directorio y después los archivos que contiene ordenados temporalmente y por último el contenido de cada subdirectorio de la misma manera.