1ª Práctica: Introducción a C++, reconocimiento de objetos en Tipos Abstractos De Datos (TAD)


    Se trata de realizar una introducción al C++,  a la vez que se trabajan las bases de la orientación a objetos. Una de éstas bases son los TADs, los cuáles sirvieron de inspiración en su día para la adición de clases a C.
 

Bibliografía y links de la práctica

    (Stroustrup, B. 1991)
    (Kalev, D., 1999)
    Iniciación rápida a C++

Conocimientos necesarios

Texto de la práctica


    1. Codificar un programa en ANSI/ISO C++ que pida por teclado el nombre del usuario, y su edad, y finalice mostrando por pantalla su nombre y su edad en el formato: "Hola, <nombre>, tienes <edad> años".

    2. Dado el siguiente programa, rellenar los espacios marcados con  ... . Una vez finalizado, debe compilarse y ejecutarse.

// ex1.cpp

#include <iostream>
#include <...>

class TeoremaPitagoras {
    ...:
    int cateto1,cateto2;
    int sqr(int);

    public:
    void putCateto1(int);
    void putCateto2(int);
    int  getResultado();
};

int TeoremaPitagoras::sqr(int x)
{
    return ...*x;
}

void TeoremaPitagoras::putCateto1(int x)
{
    cateto1 = x;
}

void TeoremaPitagoras::putCateto2(int x)
{
    ... = x;
}

int TeoremaPitagoras::getResultado(void)
{
    return sqrt( sqr( ... ) ... );
}
 

using namespace std;

int main(void)
{
    ... trix;
    int cat1;
    int cat2;

    cout << "Introduzca el cateto del triángulo: " << endl;
    cin  >> ... ;
    trix.putCateto1( cat1 );

    cout << "Introduzca el segundo cateto del triángulo: " << endl;
    cin  >> ...;
    ...

    cout << "La hipotenusa es " << trix. ... << endl;
}

    3. Dado el siguiente programa en C, codificar una versión en C++ con la misma funcionalidad:

/*
    Pila.c

    Implementa el TDA Pila
*/

#define MAXELEM 100

#include <stdio.h>
#include <stdlib.h>
 

/* Declaraciones del TDA Pila
-------------------------------------------------------------------------------
*/

typedef struct {
    int sp[MAXELEM];
    int elem;
} Pila;

Pila *crearPila(void); 
Pila *insertar(Pila *, int);
int sacar(Pila *);
bool esVacia(Pila*);
void eliminarPila(Pila *p);

/* Implementa el TDA pila
-------------------------------------------------------------------------------
*/

Pila *crearPila()
{
    Pila *dev;

    dev = (Pila *) malloc( sizeof( Pila ) );
    dev->elem = 0;

    return dev;
}

void eliminarPila(Pila *p)
{
    free( p );

}

Pila *insertar(Pila *p, int x)
{
    if (p->elem<MAXELEM)
    {
        p->sp[ ( p->elem )++ ] = x;
        return  p;
    }
    else return NULL;
}

int sacar(Pila *p)
{
    return p->sp[ --( p->elem ) ];
}

bool esVacia(Pila *p)
{
    return ( p->elem == 0 );
}

/* Programa Principal
-------------------------------------------------------------------------------
*/

int main(void)
{
    int elemento;
    Pila *miPila = crearPila();
    Pila *aux;  

    /* Meter elementos en la pila */

    printf( "Introduzca elementos para guardar en la pila\n"
            "-1 termina.\n" );
    do {
        scanf( "%d\n", &elemento );
        aux = insertar( miPila, elemento);
    } while( aux      != NULL
         &&  elemento != -1 );

    /* Sacar el -1 */

    sacar( miPila );

    

    /* Mostrar la pila */

    while ( !esVacia( miPila ) )
    {
        printf( "Tope: %d\n", sacar( miPila ) );
    } 

    eliminarPila( miPila );

}