PRÁCTICA 1ª: Creación y utilización de matrices

Anuncio
UNIVERSIDAD DE ALCALÁ
DEPARTAMENTO DE AUTOMÁTICA
ÁREA DE ARQUITECTURA Y TECNOLOGÍA DE COMPUTADORES
ASIGNATURA DE LABORATORIO DE PROGRAMACIÓN AVANZADA
TELECOMUNICACIÓN
Página 1
PRÁCTICA 1ª: Creación y utilización de matrices dinámicas.
OBJETIVOS: Repaso de conceptos de programación vistos en cursos anteriores,
especialmente punteros y asignación dinámica de memoria.
PUBLICACIÓN DEL ENUNCIADO: Semana del 29 de septiembre de 2003.
ENTREGA: Clase de laboratorio de la semana del 20 de octubre de 2003 junto con la
práctica 2.
Se deberán realizar cuatro funciones con los siguientes prototipos:
int ** CrearMatriz (int nFilas, int nColumnas);
Esta función creará una matriz dinámica cuyas dimensiones vendrán dadas por los
parámetros de tipo entero que se le pasan. Para ello hará uso de la asignación dinámica
de memoria. Devolverá un puntero a puntero a entero. Mediante este puntero se
accederá a la matriz.
nColumnas
int**
nFilas
void LeerMatriz (struct matriz * pDestino);
Esta función pedirá datos por pantalla y los introducirá en la matriz recibida
(previamente creada con la función anterior). Como único parámetro se le pasará por
referencia una variable del tipo struct matriz. Este tipo tiene la siguiente definición:
struct matriz
{
int nFilas;
int nColumnas;
int ** ppnMatriz;
};
// Num. de filas
// Num. de columnas
// Datos de la matriz
Una variable de este tipo almacena en su campo nFilas el número de filas, en su campo
nColumnas el número de columnas y en su campo ppnMatriz la dirección de comienzo
de la matriz dinámica. Es decir, una variable de este tipo almacena toda la información
necesaria para la creación y utilización de una matriz dinámica.
void MostrarMatriz (struct matriz * pOrigen);
UNIVERSIDAD DE ALCALÁ
DEPARTAMENTO DE AUTOMÁTICA
ÁREA DE ARQUITECTURA Y TECNOLOGÍA DE COMPUTADORES
ASIGNATURA DE LABORATORIO DE PROGRAMACIÓN AVANZADA
TELECOMUNICACIÓN
Página 2
Esta función sacará los datos de una matriz dinámica por pantalla. Como único
parámetro se le pasará por referencia una estructura del tipo struct matriz asociada a
la matriz .
void DestruirMatriz (struct matriz * pVictima);
Esta función destruirá la matriz dinámica liberando la memoria asignada
dinámicamente.
void main ();
La aplicación deberá mostrar el siguiente menú:
1.
2.
3.
4.
5.
Crear matriz
Leer matriz
Mostrar matriz
Destruir matriz
Salir
Todas las opciones del menú tienen que poder ser ejecutadas en cualquier orden y
repetidas veces. Asimismo, cada opción del menú deberá invocar a una función
que realice el proceso requerido. Todo esto será aplicable a cada una de las
prácticas.
Deberá probarse el programa con matrices cuadradas, matrices con más filas que
columnas, y matrices con más columnas que filas.
Observar que en algunas de las funciones utilizadas, la estructura se pasa por referencia,
¿podría ser pasada por valor en todos los casos?
REALIZAR otra versión del programa utilizando el tipo vector<T>. Elimine las
funciones que no sean necesarias para utilizar dicho tipo.
NOTA: En esta práctica se permitirá el uso de los mecanismos de C para entrada/salida
y asignación/liberación dinámica de memoria: printf(), scanf(), malloc(),
free()... En las siguientes prácticas se deberá usar los mecanismos propios de C++:
cin, cout, new, delete...
NOTA: Para que el programa detecte las lagunas de memoria (memoria dinámica
reservada y no liberada), y accesos a memoria no permitidos, se deben usar las macros
INFORME_MEMORIA y LAGUNAS_MEMORIA proporcionadas en el fichero
report_mem.h. Este fichero puede obtenerse en el laboratorio o en la página Web de la
asignatura.
Ejemplo de uso:
UNIVERSIDAD DE ALCALÁ
DEPARTAMENTO DE AUTOMÁTICA
ÁREA DE ARQUITECTURA Y TECNOLOGÍA DE COMPUTADORES
ASIGNATURA DE LABORATORIO DE PROGRAMACIÓN AVANZADA
TELECOMUNICACIÓN
Página 3
PLANTILLA PARA UTILIZAR EN SUS PROGRAMAS
#include "report_mem.h"
// otras directrices del preprocesador
// declaraciones de funciones
void main()
{
INFORME_MEMORIA;
{
// declaraciones de variables
// cuerpo de la función main
}
LAGUNAS_MEMORIA;
}
La utilización de las macros será aplicable a cada una de las prácticas. Asimismo
se deberá presentar el código perfectamente tabulado y documentado.
Descargar