Escuela Politécnica Superior de Elche EXAMEN PRÁCTICO DE

Anuncio
Escuela Politécnica Superior de Elche
Ingeniería Industrial
EXAMEN PRÁCTICO DE INFORMÁTICA APLICADA
Junio de 2007
Realice un programa en Dev C++ 5.0, con las siguientes especificaciones:
‰
Se debe implementar la clase CMatriz que permite manejar matrices complejas. Una
matriz compleja tiene como elementos números complejos.
‰
Se utilizará gestión dinámica de memoria para el almacenamiento de los datos de la
matriz. Para almacenar los datos se utiliza un puntero de tipo CComplejo ** (la clase
Ccomplejo se proporciona incompleta al alumno).
‰
La definición de la clase CMatriz se da a continuación:
// Definición de constantes
#include "..\inc\Complejo.h"
// Definición de macros
#define TAM_DEF 2
// Definición de tipos de datos y clases
class CMatriz
{
private:
int fil;
int col;
CComplejo **mat;
public:
CMatriz(int fil=TAM_DEF, int col=TAM_DEF);
CMatriz(CMatriz &orig);
//constructor copia
~CMatriz(void);
CMatriz operator + (CMatriz &der);
CMatriz operator - (CMatriz &der);
CMatriz operator * (CMatriz &der);
CMatriz& operator = (const CMatriz &der);
void Visualizar(void); // visualiza
void IntroducirValores(void);
los datos de la matriz
}; // fin de la clase CMatriz
‰
La definición de la clase CComplejo se da a continuación:
// Definición de tipos de datos y clases
class CComplejo {
private:
float real;
// parte real
float imag;
// parte imaginaria
Examen IA. Junio 2007
Escuela Politécnica Superior de Elche
Ingeniería Industrial
public:
CComplejo(void);
// constructor por defecto
CComplejo(float num_real, float num_imag = 0.0); // constructor a partir de dos reales
CComplejo(const CComplejo &compl_orig);
// constructor copia
~CComplejo(void);
// destructor
void AsignarReal(float num_real);
void AsignarImag(float num_imag);
void Visualizar(void);
void IntroducirValores(void);
// Asigna la parte real
// Asigna la parte imaginaria
// Muestra en pantalla el número complejo
CComplejo& operator = (const CComplejo & compl_orig);
CComplejo operator + (const CComplejo &a);
CComplejo operator - (const CComplejo &a);
CComplejo operator * (const CComplejo &a);
// fin de la clase CComplejo
};
‰
// operador asignación
Note el alumno que, en este caso, la clase CMatriz tiene un dato de la clase llamado
mat, de tipo CComplejo**. Este puntero se utilizará para reservar la memoria necesaria
para una matriz de números complejos. Se proporciona al alumno parte del código de
la clase CComplejo y de la clase CMatriz, debiéndose completar los métodos que se
indican.
INSTRUCCIONES PARA LA REALIZACIÓN DEL EJERCICIO:
‰
Descargad los siguientes ficheros desde la web de la asignatura, para ello escribid la
siguiente ruta en el navegador:
isa.umh.es/asignaturas/ia/exIA_0607/fich.zip
‰
Cread un directorio en vuestro PC, con el nombre y apellidos del alumno:
T:\NombreApellidos
‰
Descomprimid el fichero anterior en el directorio. Se deberá encontrar la estructura
típica de directorios utilizada en las prácticas. El fichero examenIA.dev es un fichero de
proyecto de Dev C++ donde se han incluído los ficheros necesarios para hacer el
examen.
‰
En el encabezado de cada fichero escribid vuestro nombre completo.
‰
Una vez terminado el ejercicio debéis esperar con el PC encendido a que el
profesor responsable guarde los ficheros en una unidad USB.
REALICE LAS SIGUIENTE TAREAS
Examen IA. Junio 2007
Escuela Politécnica Superior de Elche
Ingeniería Industrial
1) Escriba el método IntroducirValores de la clase CComplejo. Deberá recoger un número
complejo por teclado y almacenar su parte real e imaginaria (fichero complejo.cpp).
void CComplejo::IntroducirValores(void)
{
...
}
(1.0 punto)
2) Escriba el método Visualizar de la clase CComplejo. Deberá mostrar un número
complejo por pantalla. Ejemplos de visualización:
1+1i
1-1i (y no 1+-1i)
6 (y no 6+0i)
5i (y no 0+5i)
void CComplejo::Visualizar(void)
{
...
}
(1.0 punto)
3) Escriba el código del constructor de la clase CMatriz, con número de filas y columnas.
Deberá liberar la memoria necesaria para una matriz de elementos de la clase
CComplejo.
CMatriz::CMatriz(int filas, int columnas)
{
...
}
(1.0 punto)
Escriba el código del constructor copia de la clase CMatriz. Debe crear un nuevo objeto
que sea idéntico a orig.
CMatriz::CMatriz(CMatriz& orig)
{
...
}
4)
(1.0 punto)
Escriba el destructor de la clase CMatriz. Deberá liberar la memoria asignada en el
constructor.
CMatriz::~CMatriz()
{
...
}
5)
(1.0 punto)
Escriba el método Visualizar de la clase CMatriz. Deberá mostrar por pantalla los
elementos de la matriz arreglados en filas y columnas. Para visualizar cada uno de los
elementos de la matriz, la función deberá llamar al método Visualizar de la clase
CComplejo.
void CMatriz::Visualizar()
{
...
}
6)
Examen IA. Junio 2007
Escuela Politécnica Superior de Elche
Ingeniería Industrial
(1.0 punto)
Escriba el método IntroducirValores de la clase CMatriz. Deberá pedir por teclado los
elementos de la matriz. Para cada uno de los elementos de la matriz, la función deberá
llamar al método IntroducirValores de la clase CComplejo.
void CMatriz::IntroducirValores()
{
...
}
7)
(1.0 punto)
8)
Realice la sobrecarga del operador + para objetos de la clase CMatriz. Deberá sumar
dos matrices complejas y devolver el resultado.
CMatriz CMatriz::operator + (CMatriz &der)
{
CMatriz suma(*this);
...
return suma;
}
(1.0 punto)
Realice la sobrecarga del operador - para objetos de la clase CMatriz. Deberá restar dos
matrices complejas y devolver el resultado.
CMatriz CMatriz::operator - (CMatriz &der)
{
CMatriz resta(*this);
9)
...
return resta;
}
(1.0 punto)
10) Realice la sobrecarga del operador = para objetos de la clase CMatriz. Deberá asignar
una matriz compleja a otra.
CMatriz& CMatriz::operator = (const CMatriz &der)
{
...
return (*this);
}
(1.0 punto)
Finalmente se deberá comprobar el funcionamiento del código escrito utilizando la función
main que se proporciona en el fichero MainCMatriz.cpp. El programa crea 3 matrices y pide
por teclado sus elementos. A continuación realiza la suma y la resta de las dos matrices
complejas y muestra por pantalla los resultados.
Examen IA. Junio 2007
Descargar