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

Entradas populares de este blog

Probablemente no deberías usar cualquier cable para cargar tu iPhone

A menos que quieras que un hacker pueda secuestrar su portátil..... Si parece un cable de carga, se ve q es un cable de carga y carga su teléfono, debe ser un cable de carga, ¿verdad? Bueno, un poco si. Pero eso no significa que eso únicamente sea eso. Mike Grover, un investigador de seguridad con sede en San Francisco, ha hecho un cable de carga para iPhone, que, cuando está conectado al teléfono en un extremo y su portátil en el otro, puede piratear el portátil. ¿Suena siniestro? Solo porque hay mucho en juego. El autor intelectual detrás del hack puede enviar correos electrónicos de phishing, etc... Grover comenzó a experimentar con cables maliciosos en 2017 como parte de un intento de aprender cómo diseñar, fabricar y ensamblar placas de circuito impreso, lo que hace a mano con herramientas de consumo de su cocina. Entonces comenzó a suceder algo gracioso: la gente se enteró de los cables de Grover, por lo que decidió comenzar a venderlos. En este momento, los cables O

Preguntas y respuestas sobre Raspberry Pi

¿Le resulta difícil buscar respuestas a sus preguntas sobre Raspberry Pi? ¿Busca ayuda para comenzar un proyecto? ¿Tiene alguna pregunta que necesita respuesta? ¿Una pregunta para la que solo has hecho investigación básica? ¿Tal vez algo que piensas que todos menos tú sabes? P: ¿Alguien tiene alguna idea de lo que puedo hacer con mi Pi? A: Prácticamente cualquier cosa, puedes ver infinidad de proyectos en internet . P: Mi Pi se comporta de manera extraña, ¿qué hago? R: La tarjeta SD es mala o problemas de energía. El 99.999% de las veces es una de estas dos cosas. P: ¿Qué modelo de Raspberry Pi debería obtener? R: Obtenga la Raspberry Pi 4B con 4GB de RAM P: ¿Puedo usar la tarjeta SD de otra Pi en mi Pi 4? R: Solo si la tarjeta SD ya tiene Raspbian Buster P: Encontré una guía antigua que me dice exactamente cómo hacer algo, ¿debería seguirla? A: Sí, síguelo. Si te quedas atascado, regresa y describe en google el paso exacto en el que estás atascado. P: ¿Cuándo se l