FUNDAMENTOS DE INFORMÁTICA 1º GITI, GITT, IEM, ITL Práctica 7: Matrices y paso a funciones Programa 1 Escribir un programa que declare dos matrices cuadradas mat y trasp de NxN (10x10) y le pregunte al usuario el tamaño de la matriz cuadrada con el que quiere trabajar (es decir, el nº de filas, que es igual que el de columnas que habrá que validar). A continuación inicializar la matriz mat leyendo de teclado. Dentro del programa principal escribir el código necesario para calcular la matriz traspuesta de mat guardando el resultado en la matriz trasp. Después en el programa principal se debe llamar a la función SumaDiag() que calcula la suma de la diagonal inversa. El prototipo es: int SumaDiag (int m[][N], int tam); Mostrar el resultado. Escribir el código de main y de la función. Nota: en una el elemento (i,j) de una matriz es el elemento (j,i) de la matriz traspuesta. Diagonal inversa Programa 2 Escribir un programa en C que declare una matriz float kilometros[N][N]; (N es 4) donde se almacenarán los kilómetros existentes entre varias capitales de la provincia de Andalucía. Asimismo, se desea declarar una matriz char capitales[N][M]; (M es 30) donde se almacenará el nombre de algunas capitales de provincia.(Jaén, Córdoba, Sevilla, Huelva). Se pide: a) Escribir una función void CargarCapitales(char ciudades[][M]); que cargue la matriz de capitales introduciendo los valores por teclado. (Por ejemplo: Jaén, Córdoba, Sevilla, Huelva.)). La matriz resultante es: Jaen Cordoba Sevilla Huelva b) Escribir una función void CargarKilometros(char ciudades[][M], float distancia[][N]); que cargue la matriz de distancia, mostrando un mensaje con el nombre de las capitales en la que se desea introducir los kilómetros. Las matrices se escribirán en el main una vez leídas. 1 La matriz resultante es: 0 104 242 336 104 0 138 232 242 138 0 94 336 232 94 0 En el programa principal se mostraran con el siguiente aspecto c) Escribir una función int validar(char ciudad[], char ciudades[][M]); que recibiendo el nombre de una ciudad, compruebe si existe en la matriz ciudades, devolviendo -1 si no existe y su posición en caso contrario. d) Escribir una función float BuscarKilometros(float distancia[][N], int i_origen, int i_destino);que devuelva el número de kilómetros que hay entre dos capitales. El número de kilómetros se escribirá en el main una vez calculado, junto con el nombre de las capitales. e) Escribir un programa principal (main) que permita probar las funciones anteriores. A continuación se aporta la tabla de kilómetros necesarios para poder realizar el ejercicio Jaen Cordoba Sevilla Huelva Jaen 0 104 242 336 Cordoba 104 0 138 232 Sevilla 242 138 0 94 Huelva 336 232 94 0 Programa 3 Escribir un programa que declare 2 cadenas de caracteres (cadena1 y cadena2), lea una frase desde el teclado en cadena1 y obtenga el acrónimo de la misma guardándolo en cadena2. Ejemplo: si la frase es “Organización de Naciones Unidas” se debe obtener “ONU” PD. Se deben recoger las letras iniciales que empiecen por mayúsculas 2 Programa 4 Escribir un programa que genera e imprime un cuadrado mágico de dimensión N (siendo N un número entero, positivo e impar). Un cuadrado mágico de dimensión N es una matriz cuadrada de orden N, conteniendo los números naturales de 1 a N2 , tal que coinciden la suma de los números de una cualquiera de las filas, columnas o diagonales principales. El cuadrado se construye mediante las siguientes reglas: • El número 1 se coloca en la casilla central de la primera fila. • Cada número siguiente se coloca en la casilla correspondiente a la fila anterior y columna posterior. • Si el número sigue a un múltiplo de N, no se aplica la regla anterior, sino que se coloca en la casilla de la fila posterior e igual columna. • Se considera que la fila anterior a la primera es la última, y la columna posterior a la última es la primera. Se debe codificar un programa principal donde se pida el orden del cuadrado, validando que sea impar y menor que 25. A continuación se debe invocar a la función void CargarCuadrado(int matriz[][25],int dim ); donde generará de manera automática el cuadrado, para finalmente mostrarlo en el programa principal. Informe de la práctica • • Listados de los programas fuente Ejemplos de salidas de ejecución 3