Ir al contenido principal

Examen de Programación 1

Según se comenta, el examen de programación del 3 de Febrero, no será un programa a desarrollar, si no más bien una prueba que constará de varios ejercicios.


Suerte a tod@s.

Comentarios

  1. esto si que viene bien para el examen:
    --------------------------------------
    (burbuja + centinela)

    #include

    using namespace std;

    // Definición de constantes
    const unsigned int MAX = 10;

    // Definición de tipos
    typedef int TpElemento; // Debe permitir los operadores relacionales
    typedef TpElemento TpVector[MAX];
    struct TpDatos{
    TpVector v;
    unsigned int numDatos;
    };

    // Ordena en orden creciente una lista de datos
    void OrdenarPorIntercambio(TpDatos &dato);

    // Escribe por pantalla los datos
    void EscribirDatos(const TpDatos &datos);

    int main(){
    TpDatos datos = {{10, 5, 11, 44, -7, 12, 14, -6, 21, 129},10};

    cout << "Los datos son: " << endl;
    EscribirDatos(datos);

    OrdenarPorIntercambio(datos);
    cout << "Los datos son ORDENADOS son: " << endl;
    EscribirDatos(datos);

    return 0;
    }

    // Ordena en orden creciente una lista de datos
    void OrdenarPorIntercambio(TpDatos &datos){
    TpElemento temp;
    unsigned int i;
    bool hayInter = true;

    i = 1;
    while (i < datos.numDatos && hayInter){
    hayInter = false;
    for (unsigned int j = datos.numDatos-1; j >= i; --j){
    if (datos.v[j-1] > datos.v[j] ){ // ¿Intercambiar?
    // Intercambiamos los elementos:
    hayInter = true;
    temp = datos.v[j-1];
    datos.v[j-1] = datos.v[j];
    datos.v[j] = temp;
    }
    }
    ++i;
    }
    }

    void EscribirDatos(const TpDatos &datos){
    for (unsigned i=0; i<datos.numDatos; ++i){
    cout << datos.v[i] << ' ';
    }
    cout << endl << datos.numDatos << " elementos." << endl;
    }

    ResponderEliminar
  2. (búsqueda secuencial + centinela):


    #include

    using namespace std;

    // Definición de constantes
    const unsigned int MAX = 10;

    // Definición de tipos
    typedef int TpElemento;
    typedef TpElemento TpVector[MAX+1];
    struct TpDatos{
    TpVector v;
    unsigned int numDatos;
    };

    // Declaración de prototipos
    // Algoritmo de búsqueda secuencial: si encuentra
    // el elemento, devuelve true; false, si no lo
    // encuentra. Se hace búsqueda con centinela:
    // el elemento a buscar se inserta en la posición
    // datos.numDatos.
    // PRECONDICIÓN: datos.numDatos >= 0 && datos.numDatos<=MAX
    bool BuscarSecCent(TpDatos &datos, const TpElemento x);

    // Escribe por pantalla la lista de datos
    void EscribirDatos(const TpDatos &datos);

    int main(){
    TpDatos datos = {{10, 5, 11, 44, -7, 12, 14, -6, 21, 129, 0},10};
    TpElemento elem;

    cout << "Los datos son: " << endl;
    EscribirDatos(datos);

    cout << "Introduzca un elemento a buscar: ";
    cin >> elem;

    if (BuscarSecCent(datos, elem)){
    cout << elem << " está en la lista de datos." << endl;
    }
    else{
    cout << elem << " NO está en la lista de datos." << endl;
    }
    }

    bool BuscarSecCent(TpDatos &datos, const TpElemento x){
    bool encontrado = false;
    unsigned int ind = 0;

    datos.v[datos.numDatos] = x; // Se inserta el centinela
    while (datos.v[ind] != x){
    ind++;
    }
    if (ind != datos.numDatos){
    encontrado = true;
    }
    return encontrado;
    }

    void EscribirDatos(const TpDatos &datos){
    for (unsigned i=0; i<datos.numDatos; ++i){
    cout << datos.v[i] << ' ';
    }
    cout << endl << datos.numDatos << " elementos." << endl;
    }

    ResponderEliminar
  3. (búsqueda binaria):


    #include

    using namespace std;

    // Definición de constantes
    const unsigned int MAX = 10;

    // Definición de tipos
    typedef int TpElemento;
    typedef TpElemento TpVector[MAX];
    struct TpDatos{
    TpVector v;
    unsigned int numDatos;
    };

    // Declaración de prototipos
    // Algoritmo de búsqueda binaria: si encuentra
    // el elemento, devuelve true; false, si no lo
    // encuentra
    bool BuscarBin(const TpDatos &datos, const TpElemento x);

    // Escribe por pantalla la lista de datos
    void EscribirDatos(const TpDatos &datos);

    int main(){
    TpDatos datos = {{-1, 3, 5, 7, 11, 13, 15, 17, 19, 21},10};
    TpElemento elem;

    cout << "Los datos son: " << endl;
    EscribirDatos(datos);

    cout << "Introduzca un elemento a buscar: ";
    cin >> elem;

    if (BuscarBin(datos, elem)){
    cout << elem << " está en la lista de datos." << endl;
    }
    else{
    cout << elem << " NO está en la lista de datos." << endl;
    }
    }

    bool BuscarBin(const TpDatos &datos, const TpElemento x){
    bool encontrado = false;
    unsigned int izq, der, m;

    izq = 0;
    der = datos.numDatos - 1;

    while (izq <= der && !encontrado){
    m = (izq + der) / 2; // Posición central de la lista
    if (datos.v[m] == x){
    encontrado = true;
    }
    else if (datos.v[m] < x){
    izq = m + 1; // Buscamos en la mitad derecha
    }
    else{
    der = m - 1; // Buscamos en la mitad izquierda
    }
    }

    return encontrado;
    }

    void EscribirDatos(const TpDatos &datos){
    for (unsigned i=0; i<datos.numDatos; ++i){
    cout << datos.v[i] << ' ';
    }
    cout << endl << datos.numDatos << " elementos." << endl;
    }

    ResponderEliminar
  4. Gracias por la aportación juanma, seguro q nos pone alguna ordenación si que si.


    Suerte y al toro!!!!

    ResponderEliminar
  5. la lástima ha sido que no había internet jajajaja

    ResponderEliminar
  6. Pues al final, ni ordenación, ni na.


    Me esperaba otro tipo de examen.

    ResponderEliminar

Publicar un comentario