Informática del CBI – 2015 Dictado : Ing. Juan Manuel Conti
TRABAJO PRACTICO Nro 10. Procedimientos y Matrices en Pascal. Problema 1 : En el siguiente esquema: DIM2 = 5 ParteImag
DIM1 = 10
ParteRe
DIM2 = 5
una matriz de enteros de 10 x 5, tiene asociado a su izquierda un vector de 10 elementos correspondiente a la ParteReal de un complejo, y en su parte superior otro vector de 5 elementos correspondiente a la ParteIm del mismo complejo. Un procedimiento denominado CargarComponentes( ) recibirá como parámetros ambos vectores y los asignará con valores aleatorios en el rango 100, 999 (no mostrara nada por pantalla). Luego otro procedimiento de nombre CargarModulos( ) recibirá 3 parámetros: los dos vectores asignados recientemente y la matriz, y cargará c/domicilio con los correspondientes módulos. Finalmente, y siempre desde el main( ), invocará los servicios de un tercer procedimiento denominado MostrarComplejos( ) que tomará como parámetros los dos vectores y la matriz, y mostrará por pantalla:
Trabajo Práctico Nro 10
Pág.1/4
Informática del CBI – 2015 Dictado : Ing. Juan Manuel Conti
Problema 2 : En el siguiente esquema:
L = 100
Dentro de un cuadrado de lado L=100 se hallan inscriptas 4 circunferencias con los siguientes datos: Xc Yc R ----------------25 25 15 50 75 20 75 50 10 75 12 12 Un procedimiento denominado CargarMatrizDeDatos( ) recibirá como único parámetro, una matriz para almacenar estos datos. Luego, un segundo procedimiento de nombre CargarVectorDeHallazgos( ) recibirá como parámetros la matriz ya cargada, un vector de enteros para almacenar la cantidad de puntos que hayan salido dentro de las circunferencias y los Linf y Lsup del rango de los enteros aleatorios con que generará Xg y Yg de c/punto. Este procedimiento generará 1000 pares de coordenadas y hará su trabajo. Los elementos almacenados en este vector serán mostrados en el punto de invocacion (main).
Trabajo Práctico Nro 10
Pág.2/4
Informática del CBI – 2015 Dictado : Ing. Juan Manuel Conti Problema 3 : Una matriz de enteros de nombre Mat1[ ] de 12 x 10, debe ser cargada por un procedimiento denominado CargarMatrizM1( ) que recibirá como parámetros: la matriz en cuestión, y los limites Linf y Lsup del rango de aleatorios con que la cargará. Además la irá mostrando por pantalla a medida que la vaya asignando. Los limites de los aleatorios estarán entre 1000 y 32000. Un segundo procedimiento de nombre CargarMatrizM2( ) recibirá como parámetros la matriz anterior ya cargada y una segunda matriz también de enteros y del mismo orden (12 x 10), y asignará cada domicilio de la siguiente manera: la suma del producto de los dígitos pares + el producto de los dígitos impares. Ejemplo: M1[i,j] ----> 31247 ----> M2[i,j] ----> 4x2 + 7x1x3 = 8 + 21 =29 y así sucesivamente. La determinación de estos valores estará a cargo de una función llamada ValorDelDomicilio( ) que tomará como único parámetro el valor numérico de M1[ ] actual. Esta segunda matriz se mostrará desde el punto de invocación y a continuación de la anterior para poder chequear los resultados. IMPORTANTE: 1) Si el digito que se está considerando es 0, no resultará ni par ni impar, así que téngalo en cuenta. 2) Si todos los dígitos del número actual son pares o todos impares también se generará una situación de error, puesto que como estamos trabajando con productorias, éstas deben inicializarse en 1 y luego aportarán algo que no existe, así que tome sus recaudos.
Problema 4 :
d=10
H=80
L=100
Trabajo Práctico Nro 10
Pág.3/4
Informática del CBI – 2015 Dictado : Ing. Juan Manuel Conti Un rectángulo de largo L=100 y altura H=80 posee en su interior una cierta cantidad de circunferencias de diámetro d=10. Un procedimiento denominado CargarCentros( ) recibirá como parámetros una matriz MC[ ] para almacenar las coordenadas Xc,Yc de cada circunferencia. Luego otro procedimiento de nombre CargarHallazgos( ), recibirá 2 parámetros: la matriz anterior ya asignada, y otra matriz de enteros (MH[ ] - matriz de hallazgos) de 20 x 2 cuya finalidad veremos ahora. Este procedimiento generará puntos de coordenadas aleatorias dentro del rectángulo hasta tanto se encuentren los 20 primeros puntos que se hallen dentro de las circunferencias. Cada vez que un punto resulte pertenecer a alguna circunferencia, sus coordenadas Xc,Yc, se guardarán en MH[ ]. Para saber si un punto está dentro de una cf, este procedimiento invocará a una función de nombre EstaEnCf( ) que recibirá como parámetros, MC[ ], y las coordenadas aleatorias x e y. Esta función retornará true o false. Desde el main( ) se mostrará por pantalla las coordenadas almacenadas en la matriz MH[ ] (matriz de hallazgos).
Trabajo Práctico Nro 10
Pág.4/4