Universidad Rey Juan Carlos Curso 1999/00

Ingenierías Técnicas en Informática de Sistemas y de Gestión

Asignatura: PROGRAMACIÓN EN C++

PRÁCTICA I

Objetivos:

Comprobar que el alumno ha adquirido destreza con la sintaxis de C++.

Normas:

La práctica se presentará antes del día 8 de Febrero al profesor en el aula.

La práctica se puede realizar en grupos de 2 personas máximo.

La práctica se entregará en forma de disquete de doble cara y alta densidad (HD 1.44 Mb). El disquete estará etiquetado con el título: Programación en C++ y el nombre y apellidos del alumno.

El disquete contendrá los archivos:

SuperEntero.cpp

SuperEntero.h

que deben compilar en Borland C++ 5.0.

Enunciado:

La práctica consistirá en la implementación de una clase C++ que permita declarar y manipular objetos SuperEnteros. Un objeto SuperEntero permite la manipulación de números enteros de longitud arbitraria.

Las operaciones que deben permitirse sobre estos elementos se definen en el fichero cabecera SuperEntero.h, que al menos debe contener los siguientes métodos públicos:

class SuperEntero

{

private:

/*

Propiedades privadas que definen la estructura del objeto.

Métodos que realizan operaciones básicas que no deseamos que sean accesibles para el cliente.

*/

public:

SuperEntero();

/*

CrearVacio: -> SuperEntero

Pos: Declara objetos vacíos de esta clase, inicializando adecuadamente sus propiedades.

*/

~SuperEntero();

/*

Destruir: SuperEntero -> ¿?

Pos: Destruye objetos de esta clase, liberando los recursos que pudiera haber tomado.

*/

SuperEntero(const SuperEntero &valor);

/*

ConstructorCopia: SuperEntero -> SuperEntero

Pos: Realiza una copia del objeto.

*/

SuperEntero& operator=(const char valor[]);

/*

AsignarCadena: Cadena -> SuperEntero

Pre: Esta cadena contendrá solo números, pudiendo ir precedida por el signo menos(-).

Pos: Permite asignar a un SuperEntero el valor de una cadena de caracteres.

Ej. de uso:

SuperEntero a;

a="-3245632432";

*/

SuperEntero& operator=(const SuperEntero &valor);

/*

AsignarSuperEntero: SuperEntero -> SuperEntero

Pos: Permite asignar a un SuperEntero el valor de otro

Ej. de uso:

SuperEntero a,b;

a="-3245632432";

b=a;

*/

void Print();

/*

Print: SuperEntero-> ¿?

Pos: Imprime por pantalla el SuperEntero sobre el que se ha invocado el método.

Ej. de uso:

SuperEntero a;

a="3245632432";

a.Print();

*/

 

 

SuperEntero operator+(const SuperEntero &valor) const;

/*

Sumar: SuperEntero x SuperEntero -> SuperEntero

Pos: Realiza la suma entre elementos de la clase. Suma el SuperEntero sobre el que se invoca el método con el SuperEntero "valor" que se le pasa por parámetros, devolviendo como resultado otro SuperEntero.

Ej. de uso:

SuperEntero a,b,c;

a="3245632432";

b="3278436";

c=a+b;

*/

SuperEntero operator-(const SuperEntero &valor) const;

/*

Restar: SuperEntero x SuperEntero -> SuperEntero

Pos: Realiza restas entre elementos de la clase. Resta el SuperEntero sobre el que se invoca el método por SuperEntero valor que se le pasa por parámetros, devolviendo como resultado otro SuperEntero.

Ej. de uso:

SuperEntero a,b,c;

a="3245632432";

b="3278436";

c=a-b;

*/

 

 

 

 

bool operator==(const SuperEntero &valor);

/*

Iguales: SuperEntero x SuperEntero -> Booleano

Pos: Devuelve true si los dos elementos que se comparan se refieren al mismo entero (si son iguales). Los elementos que se comparán son el SuperEntero sobre el que se invoca la operación y el que se le pasa por parámetros.

Ej. de uso:

SuperEntero a,b;

a="3245632432";

b="3278436";

if (a==b) ...

*/

 

 

/***************************************************

Las dos operaciones siguientes, la multiplicación y la potencia, son opcionales para subir nota.

**************************************************/

 

 

SuperEntero operator*(const SuperEntero &valor) const;

/*

Multiplicar: SuperEntero x SuperEntero -> SuperEntero

Pos: Realiza multiplicaciones entre elementos de la clase. Multiplica el SuperEntero sobre el que se invoca el método por el SuperEntero valor, que se le pasa por parámetros, devolviendo como resultado otro SuperEntero.

Ej. de uso:

SuperEntero a,b,c;

a="3245632432";

b="3278436";

c=a*b;

*/

 

 

 

SuperEntero Potencia(const SuperEntero &valor) const;

/*

Potencia: SuperEntero x SuperEntero -> SuperEntero

Pos: Eleva el SuperEntero sobre el que se invoca al SuperEntero valor devolviendo el resultado.

Ej. de uso:

SuperEntero a,b,c;

a="2";

b="33";

c=Potencia(a,b);

*/

};

Recomendaciones:

Definir el valor del entero como un puntero a una cadena de caracteres privada, que se iniciará dinámicamente al tamaño necesario.

Corrección:

La entrega de la practica es obligatoria para aprobar la asignatura.

La corrección de la práctica se realizará de manera automática y consistirá en la ejecución de un programa. En particular el sistema de corrección comprueba que no existe otro código similar entre todos los entregados.

La puntuación obtenida en la práctica corresponde al 25% de la nota de la asignatura. Así el examen puntuará sobre 7.5 puntos y la práctica sobre 2.5 puntos. La puntuación de la practica seguirá el siguiente criterio:

El valor de esta práctica no se guardará para futuras convocatorias.