Programa de prácticas alternativas Ing. Telecomunicaciones 06-07 Práctica 4. Estructuras de tipo vector Ejercicio 1. La Agencia del Medio Ambiente (AMA) quiere desarrollar un programa en PASCAL para estimar las pérdidas económicas que ocasionarían futuros terremotos en determinadas regiones geográficas del territorio. Cada región geográfica se divide en cuadrículas geográficas. Por ejemplo, en la figura 1. se muestra una región dividida en veinticinco cuadrículas (5x5). En base a su experiencia, para cada cuadrícula concreta, la AMA ha calculado las pérdidas económicas que habría que considerar si un terremoto la arrasase. Por ejemplo, en el ejemplo de la figura 1., si un terremoto arrasase la cuadrícula determinada por las coordenadas [2, 3], las pérdidas económicas serían de 54 unidades monetarias. En general, para representar estas informaciones, se proponen las siguientes declaraciones de datos: • Cada región geográfica se representa por medio del tipo de dato tpRegion • Dada una región concreta, tpMapa representa su división en cuadrículas geográficas y max_filas y max_columnas los límites concretos de la región (es decir, pueden existir regiones de diferente tamaño) • y, finalmente, cada cuadrícula geográfica almacena un dato de tipo tpCoste, que representa las pérdidas económicas asociadas a la misma en caso de ser arrasada por un terremoto const limite_max=100; type tpCoste = 0..1000; tpMapa= array [1..limite_max, 1..limite_max] of tpCoste; tpRegion = record mapa: tpMapa; max_filas, max_columnas: 0..limite_max end; 5 5 45 72 1 3 6 78 85 6 78 54 90 78 9 65 34 7 78 10 4 23 56 54 4 Figura 1: un ejemplo de región (5x5), cuadrículas y costes Todo terremoto tiene un epicentro y una intensidad sísmica medida conforme la escala de Richter. En el caso particular de este programa, el epicentro de un terremoto se detecta en una determinada cuadrícula geográfica y, por lo tanto, se representa por medio de su correspondiente par de coordenadas [i,j]. Por otro lado, se supone que la onda expansiva de un terremoto es circular. Por ejemplo, un Dpto. Informática e Ing. Sistemas (Universidad de Zaragoza) Pedro Álvarez – José Ángel Bañares Programa de prácticas alternativas Ing. Telecomunicaciones 06-07 terremoto de grado 1 afecta a todas las cuadrículas geográficas vecinas del epicentro; un terremoto de grado dos, además de las cuadrículas dañadas por uno de grado 1, también afecta a todas las vecinas de éstas últimas; y así sucesivamente. Por ejemplo, en la figura 2. se muestran en color gris las cuadrículas afectadas por un terremoto de grado 1 (a) y de grado 2 (b), respectivamente (nótese, que los epicentros son representados en color gris oscuro). Por simplicidad, se supone que los grados de intensidad de los seísmos son únicamente valores enteros comprendidos entre 1 y 9. Figura 2: descripción del efecto de un terremoto Según lo expuesto en el párrafo anterior, para estimar las pérdidas económicas derivadas de un terremoto, hay que calcular el conjunto de cuadrículas afectadas según la intensidad del seísmo y sumar todos los costes económicos asociados a las mismas. Por ejemplo, las pérdidas del terremoto de la figura 2. (a) es de 363 unidades monetarias (98+10+35+25+26+98+2+57+12). Se pide escribir un programa PASCAL que ofrezca al usuario un menú interactivo con las siguientes opciones: • • Cargar una nueva región geográfica: Inicialmente, los datos de una región geográfica están almacenados en un fichero de texto. La estructura del fichero es la siguiente. La primera línea contiene dos números enteros que representan el número de filas y columnas de la región, respectivamente. A continuación, en cada línea del fichero se almacena todos los costes, representados como enteros y separados por un espacio en blanco, de cada fila de la estructura tpMapa, es decir, la segunda línea del fichero contiene todos los costes de la primera fila de la estructura tpMapa, la tercera línea corresponde con la segunda fila, y así sucesivamente. Si se selecciona esta opción, el programa pedirá al usuario el nombre del fichero con la información de la región, comprobará que el contenido del mismo está libre de errores y, finalmente, cargará los datos en una estructura de tipo tpRegion. Estimación del coste de un terremoto: a partir de la información de una región previamente cargada, pedirá al usuario las coordenadas [i,j] del epicentro y la intensidad en grados del terremoto, dando como resultado las pérdidas económicas derivadas del seísmo. Dpto. Informática e Ing. Sistemas (Universidad de Zaragoza) Pedro Álvarez – José Ángel Bañares Programa de prácticas alternativas • • • Ing. Telecomunicaciones 06-07 Estimación de la zona de máximo y mínimo riesgo: a partir de la información de una región previamente cargada, se pedirá al usuario la intensidad en grados de un terremoto y se calculará el epicentro donde un seísmo de esa intensidad tendría el mayor y el menor coste en pérdidas económicas. Estimación del coste medio: a partir de la información de una región previamente cargada, se pedirá al usuario la intensidad en grados de un terremoto y se calculará, considerando todos los posibles epicentros de la región, el coste medio de un seísmo de esa intensidad en esa región. Salir del programa: finaliza la ejecución de éste. Dpto. Informática e Ing. Sistemas (Universidad de Zaragoza) Pedro Álvarez – José Ángel Bañares