Práctica 4. Estructuras de tipo vector - IAAA

Anuncio
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
Descargar