Práctica 8 Programación con Matrices en

Anuncio
Fundamentos de Informática. Primer Curso de Ingenieros Industriales
Práctica 8
Programación con Matrices en Lenguaje C
1
Introducción
El objeto de la presente práctica es permitir al alumno ensayar y familiarizarse con los
conceptos de programación de matrices en lenguaje C que se han desarrollado en las clases
teóricas de la asignatura.
Para ello se hará uso del compilador Dev-C++, que permitirá editar, compilar y montar
programas desarrollados en el lenguaje de programación C.
2
Desarrollo de la Práctica
Para ilustrar los conceptos de programación de matrices en C antes mencionados, esta
práctica propone la realización y análisis de un programa concreto.
El alumno deberá desarrollar un programa que permita obtener el producto de dos matrices,
representando éste en la pantalla del ordenador, respetando el formato de filas y columnas de
la matriz resultado.
Pasos a seguir para el desarrollo de la práctica
1. Preparación del programa de edición y compilación
Para entrar en el entorno de edición del programa de Dev-C++, no tenemos más que
hacer click sobre el icono de acceso directo a Dev-C++, que a este efecto debe estar
presente en el escritorio de Windows.
Para comenzar la edición o escritura del nuevo programa, pulsaremos en menú
desplegable Archivo->nuevo->Fichero fuente o bien pulsaremos la combinación de
teclas Ctrl.+N
2. Escritura del Programa de multiplicación de matrices.
Se proporciona a continuación una plantilla para la escritura del programa de
multiplicación de matrices, en la que se define lo siguiente:
1. El tamaño en filas y columnas de las matrices a mutiplicar: FIL1,COL1 y FIL2,COL2
2. El nombre de las variables en las que están almacenadas las matrices: mat1 y mat2.
3. Inicialización del valor numérico de los elementos de dichas matrices.
4. El prototipo de la función de multiplicación de matrices: multiplica
5. Función de entrada al programa void main(void)
Práctica 8.doc
1
Fundamentos de Informática. Primer Curso de Ingenieros Industriales
6. Variables para los índices de los bucles de cálculo del producto matricial (i,j,k) y
una variable auxiliar (escalar).
PLANTILLA
#include <stdio.h>
#include <stdlib.h>
#define
#define
#define
#define
FIL1
COL1
COL2
FIL2
2
3
2
COL1 /* FIL2 debe ser igual a COL1 para poder multiplicar
void multiplica(double mat1[][COL1],double mat2[][COL2]);
main()
{
double mat1[FIL1][COL1]={{1,2,1},{3,2,4}};
double mat2[FIL2][COL2]={{5,6},{7,8},{-1,2}};
printf("Resultado de la multiplicacion\n");
.
.
(Completar el código en este espacio)
.
system(“PAUSE”);
}
void multiplica(double mat1[][COL1],double mat2[][COL2])
{
int i,j,k;
double escalar;
.
.
.
(Completar el código en este espacio)
.
}
El alumno deberá completar el código anterior para obtener un programa que multiplique
(usando la función multiplica) las matrices mat1 y mat2, declaradas e inicializadas en
main().
El resultado de dicho producto deberá mostrarse por pantalla respetando el formato de
filas y columnas del resultado, es decir, deberán aparecer filas y columnas correctamente
alineadas. Para ello se sugiere el empleo de la siguiente función para la salida de datos,
la cual garantiza una longitud fija (3 espacios para la parte entera y redondeo a 2
espacios decimales) del número que se imprima por pantalla.
printf("%3.2f
",escalar);
Se recuerda asimismo, que el programa deberá incluir el correspondiente retorno de
carro ( printf(“\n”); ) al final de la impresión de cada fila, para que éstas aparezcan
alineadas una sobre otra como corresponde.
Recordemos que la expresión del producto de dos matrices viene dada por:
Práctica 8.doc
2
Fundamentos de Informática. Primer Curso de Ingenieros Industriales
C ij = ∑ Aik Bkj
k
El programa deberá constar, por tanto, de tres bucles anidados: el más interno de ellos
(con índice k) deberá encargarse de efectuar el producto escalar de la fila i de A (o mat1)
por la columna j de B (o mat2), acumulando el resultado en la variable auxiliar escalar,
que se proporciona en la plantilla.
Los dos bucles externos, con índices i , j; deberán recorrer todas las filas de A y todas
las columnas de B respectivamente, para completar el producto.
3. Resultado de la ejecución del programa
Antes de pasar a ver el funcionamiento del programa tecleado, es conveniente guardarlo.
Puede almacenar su código fuente en cualquier directorio de la unidad local C:.
Se recuerda que para que el programa sea apropiadamente compilado como
código C, es necesario guardarlo con extensión .C, es decir en la ventana que se le
abrirá al guardar el archivo, seleccione “C source files (*.c)”
Para comprobar que el código funciona correctamente generaremos un fichero ejecutable
a partir de nuestro fichero fuente empleando la opción Compilar (Ctrl.+F9) del menú
desplegable Ejecutar de Dev-C++.
Esto generará, si el código no contiene errores, un fichero ejecutable llamado
multiplica.exe
Para ejecutarlo acudiremos de nuevo al menú Ejecutar-> Ejecutar.
El resultado debe ser el producto de las matrices arriba mencionadas.
4. Sugerencia final
Aquellos alumnos que terminen satisfactoriamente el programa anterior, pueden como
ejercicio, tratar de modificar el mismo para permitir la entrada por teclado de los
elementos de las matrices.
Práctica 8.doc
3
Descargar