Universidad Nacional del Sur Principios de Computadoras I 2° Cuatrimestre 2009 Principios de Computadoras I Trabajo Práctico N° 2 “Arreglos y Matrices” 1) Describir qué hace el siguiente programa (el código es sintácticamente correcto): program criptico; uses crt; const aleatorio = 60; var i, j, mayor, precio : integer; a: array[1..aleatorio] of integer; begin randomize; clrscr; for j := 1 to aleatorio do begin a[j] := random(91); writeln('a[',j:2,'] = ', a[j]:2);end; precio := a[1]; mayor := 1; for i := 1 to aleatorio do if a[i] < precio then begin precio := a[i]; mayor := i; end; writeln; writeln(mayor, ' ', precio); end. 2) Dado un arreglo F[] de N elementos, determinar cuál es el menor elemento y decir cuántas veces está ese valor. 3) Un operador desea calcular el promedio de las notas que tiene en un listado. Realizar un programa que lea las notas que vayan siendo ingresadas y que imprima el promedio cuando un valor negativo sea introducido. 4) Dado un arreglo G[] de M valores reales, calcular el promedio de dichos elementos. 5) Dado un arreglo Alu[1..N] que contiene las calificaciones de N alumnos, decir cuántos hay en cada una de las siguientes categorías: Categoría “ “ “ A: B: C: D: 8 < Nota <= 10 6 <= Nota <= 8 3 < Nota < 6 0 <= Nota <= 3 6) Un arreglo denominado MES tiene 12 lugares en cada uno de los cuales está a almacenada la cantidad de lluvia caída en el respectivo mes del año. Indicar el trimestre en el que menos llovió. 7) Dado un arreglo S[] de N lugares, indicar cuál es la ubicación de los dos elementos consecutivos cuya suma sea la mayor. 8) Dados tres arreglos A,M y D de n lugares cada uno, en donde: A[I] guarda el año de nacimiento del alumno I M[I] almacena el mes de nacimiento del alumno I D[I] contiene el día de nacimiento del alumno I Determinar: a) si existe algún par de alumnos que cumplan años el mismo día. b) el mes que tenga más fechas de nacimientos. c) cuál es el alumno más joven. NOTA: Para el punto c) se puede transformar la fecha de nacimiento en un único número haciendo Valor= A[I] * 10000 +M[I] * 100 +D[I]. Para ello la variable Valor deberá ser del tipo LongInt. 9) Dada una matriz A de N filas y M columnas: i) ii) iii) Indicar cuál es el MENOR elemento de cada FILA. Indicar cuál es el MAYOR elemento de cada COLUMNA. Indicar cuál es el MAYOR elemento de la matriz. Trabajo Práctico N° 2 web: http://www.lip.uns.edu.ar/pci/ - e-mail: [email protected] Página 1 de 4 Universidad Nacional del Sur Principios de Computadoras I 2° Cuatrimestre 2009 10) Realizar la recorrida de las matrices (N x N, con N par), en la forma indicada en cada caso: A[] 1 1 N B[] 1 N 1 N 4° 3° 2° 1° N N N° C[] 1 …. 4° 3° 2° 1° 1 N D[] 1 . . . . 4° 3° 2° 1° N N 4° 3° 2° 1° 11) Se está desarrollando un rally en la provincia de Córdoba en el que intervienen N vehículos. Todos comienzan la carrera simultáneamente desde un punto de largada y se desplazan con una velocidad constante. Una de las reglas de la competencia prohíbe a los corredores cargar combustible durante el transcurso de la misma. La velocidad a la que se desplaza cada uno de los móviles está almacenada en el arreglo VEL [1..N]. También dispone de otro arreglo llamado MAXKM[1..N] en el que se indica la máxima distancia que puede recorrer un vehículo antes de quedarse sin combustible. Realice un programa en Pascal que indique cuál es el vehículo que más se ha alejado del punto de partida luego de transcurridas 2 horas desde el inicio de la competencia. 12) Un determinado sistema hidráulico posee una válvula que permite el escape de vapor desde una caldera hacia el exterior. La válvula ha sido conectada a un sensor que indica si la misma está abierta o cerrada. El sensor registrará un 1 (uno) cuando la válvula está abierta y un 0 (cero) cuando la válvula está cerrada. Durante un determinado lapso de tiempo se han registrado N mediciones y los resultados se han volcado en un arreglo Medidas[1..N] que contiene los 1s y 0s enviados por el sensor. Realizar un programa en Pascal que indique: a) Cuántas veces ha sido abierta la válvula. b) El tiempo que la válvula ha permanecido cerrada, considerando que cada medición se registró cada 0.5 seg. Ejemplo: Válvula Medidas[ ] Trabajo Práctico N° 2 abierta 1 1 cerrada 0 0 Abierta 0 1 web: http://www.lip.uns.edu.ar/pci/ 1 cerrada 1 0 0 - e-mail: [email protected] abierta 1 1 1 Página 2 de 4 Universidad Nacional del Sur Principios de Computadoras I 2° Cuatrimestre 2009 13) Dado un arreglo A[ ] de N elementos (con N>=10), realice un programa que indique cuáles son los diez valores más grandes. 14) Un apicultor necesita comprar un recipiente con forma de prisma para almacenar 1000 m3 de miel. A través de Internet un fabricante le envió la siguiente información: i) Una lista llamada Dim con las dimensiones de los N recipientes que él comercializa. La lista contiene altura, ancho y profundidad (en metros) de cada recipiente. Estos datos se encuentran almacenados en forma secuencial, es decir, en las posiciones 1, 2 y 3 está la información del recipiente 1, en las posiciones 4, 5 y 6 la del recipiente 2, etc. ii) El valor [$] de un recipiente es proporcional al volumen [m3] que puede almacenar. Se sabe que la proporción es $0.10 el m3. Por ejemplo, un recipiente de 30m3 cuesta $3.00 Suponga que tiene un arreglo Dim[] de dimensión K=3*N con los datos del fabricante. Hacer un programa en Pascal que determine cuál es el recipiente más barato que se adapta a los requerimientos del apicultor. Indicar el número del recipiente y su costo. Recipiente 1 Recipiente 2 1 4 2 3 5 Recipiente N 6 i i+1 i+2 K-2 K-1 K=3*N Dim[] Altura Ancho Profundidad Volumen Prisma = Altura*Ancho*Profunidad 15) Se tienen los datos correspondientes a la ubicación de N antenas de telefonía celular dentro de una determinada región del país. Cada antena tiene asociado cuatros valores que la identifican: ubicación dentro de la región indicadas como coordenadas (X, Y), radio de alcance y código de la operadora que administra la antena (p. ej: 1=Movistar, 2=Claro, 3=Personal, etc.). Estos datos están volcados dentro de la matriz ANTENA[1..4, 1..N], de tipo real, de la siguiente forma: la fila 1 Área de Cobertura = sector pintado. almacena la coordenada X en Km, la fila 2 la coordenada Y en Km, la fila 3 el radio de alcance en Km y la fila 4 el código de la operadora. Teniendo en cuenta que: • alguien que porta un celular puede establecer comunicación con una antena determinada si se encuentra dentro del área de cobertura de dicha antena, generada a partir de la ubicación (X,Y) de la antena y el radio de alcance (ver figura), • cada celular del mercado pertenece a alguna operadora conocida, • si un celular de la empresa A utiliza para comunicarse una antena perteneciente a la empresa B, con A<>B, el costo de la llamada tiene un recargo, RADIO Y (X,Y) (0, 0) X Realice un programa en Pascal que, dada la ubicación (XC, YC) de un celular y el código de su operadora, indique al usuario si en ese punto puede establecer una comunicación, es decir “tiene señal”. En caso afirmativo indicar si el costo de la llamada sufrirá algún recargo por utilizar una antena de otra empresa. Trabajo Práctico N° 2 web: http://www.lip.uns.edu.ar/pci/ - e-mail: [email protected] Página 3 de 4 Universidad Nacional del Sur Principios de Computadoras I 2° Cuatrimestre 2009 15) Sea una matriz cuadrada A[] de dimensión NxN que contiene valores reales no nulos sólo en el triángulo superior izquierdo. El resto de la matriz contiene valores nulos. Realice un programa en Pascal que copie los valores no nulos en el sector vacío de modo tal que la matriz quede simétrica respecto a la diagonal secundaria. LLENO VACÍO Primer Parcial Día: Viernes 02 de Octubre de 2009 Hora: 16:00 a 20:00 hs. Lugar: Aula 6-C (Complejo Alem) Traer Libreta/Credencial Universitaria y/o D.N.I. Trabajo Práctico N° 2 web: http://www.lip.uns.edu.ar/pci/ - e-mail: [email protected] Página 4 de 4