Búsqueda por Edad S68761


Statement
 

pdf   zip   main.cc

thehtml

Dado un vector de personas ordenado por edad (de menor a mayor), debes encontrar el índice de la primera persona (la de índice más pequeño) en el vector que tiene una edad dada.

Cada persona está representada por una estructura con su nombre y su edad:

struct Persona {
    string nom;
    int edat;
};

El vector de personas está ordenado por edad de forma creciente, y puede haber varias personas con la misma edad.

Debes hacer la función cerca_per_edat, que retorna el índice de la primera persona con exactamente anys años de edad, o −1 si no hay ninguna persona con esa edad.

/**
 * @brief Encuentra el índice de la primera persona (con el índice mínimo)
 *        cuya edad es exactamente 'anys'.
 *
 * @returns Índice de la persona encontrada, o -1 si no hay ninguna.
 *
 * @pre   El vector de personas está ordenado por edad y puede tener
 *        varias personas con la misma edad.
 */
int cerca_per_edat(const vector<Persona>& persones, int anys)

Observación

El icono de nombre ’.CPP’ contiene el programa principal para hacer las pruebas.

Sólo debes enviar un fichero que contenga la función requerida, con los include necesarios y las funciones auxiliares que hayas declarado (si las hay), y nada más.

Propón una solución utilizando búsqueda binaria para este ejercicio. Cualquier otro tipo de solución implica la anulación total del ejercicio, independientemente del veredicto del juez.

Para poder utilizar la estructura en la solución, debes copiar y pegar el siguiente código:

#ifndef PERSONA
#define PERSONA

struct Persona {
    string nom;
    int edat;
};

#endif

Para compilar conjuntamente los dos ficheros solucion.cc y main.cc, debes ejecutar el comando: g++ -o programa.exe main.cc solucion.cc.

También puedes descargar el código de main.cc, implementar la función ahí mismo, y luego borrar la función main y enviar el fichero resultante.

Entrada

Primero se lee un entero n que indica el número de personas. Después se leen n líneas, cada una con el nombre y la edad de una persona. El vector está ordenado por edad de forma creciente. A continuación, se leen varios enteros, cada uno representando una edad a buscar.

Salida

Para cada edad leída, se escribe el índice de la primera persona con exactamente esa edad, o −1 si no hay ninguna persona con esa edad.

Public test cases
  • Input

    6
    Anna 20
    Pau 20
    Maria 25
    Joan 25
    Lluís 25
    Carla 30
    
    18
    20
    22
    25
    29
    30
    35
    

    Output

    -1
    0
    -1
    2
    -1
    5
    -1
    
  • Information
    Author
    Pau Fernández
    Language
    Spanish
    Translator
    Original language
    Catalan
    Other languages
    Catalan
    Official solutions
    C++
    User solutions
    C++