guia_trabajos_pr__ctico_ayeded_utn.pdf

31
UNIVERSIDAD TECNOLÓGICA NACIONAL FACULTAD REGIONAL CONCEPCIÓN DEL URUGUAY GUÍA DE TRABAJOS PRÁCTICOS. AÑO 2006 Materia: Algoritmos y Estructuras de datos Carrera: Ing. en Sistemas de Información Año: Primero Carga horaria: 9 horas semanales PROFESORES: ING. CLAUDIA ÁLVAREZ. AUS. PASCUAL PONTELLI. ING. ROSSANA SOSA ZITTO.

Transcript of guia_trabajos_pr__ctico_ayeded_utn.pdf

Page 1: guia_trabajos_pr__ctico_ayeded_utn.pdf

UNIVERSIDAD TECNOLÓGICA NACIONAL

FACULTAD REGIONAL CONCEPCIÓN DEL URUGUAY

GUÍA DE TRABAJOS PRÁCTICOS.

AÑO 2006

Materia: Algoritmos y Estructuras de datos Carrera: Ing. en Sistemas de Información Año: Primero Carga horaria: 9 horas semanales

PROFESORES:

ING. CLAUDIA ÁLVAREZ. AUS. PASCUAL PONTELLI.

ING. ROSSANA SOSA ZITTO.

Page 2: guia_trabajos_pr__ctico_ayeded_utn.pdf

UNIVERSIDAD TECNOLÓGICA NACIONAL - FACULTAD REGIONAL C. DEL URUGUAY Algoritmos y Estructuras de Datos

Prof. AUS. Pascual Pontelli 1

Trabajo Práctico Nº 1 Entender el Problema.

1. Dadas las longitudes de los 2 catetos de un triangulo rectángulo, hallar la longitud de la

hipotenusa. 2. Dadas las horas trabajadas por un operario y el valor de las mismas, determinar que

sueldo percibe dicho operario. 3. Dados dos valores A y B distintos, determinar cuál es el mayor. 4. Dados dos valores A y B determinar si A es mayor que B. 5. Crear dos problemas elementales, uno de evaluación y otro de decisión. 6. Determinar si una palabra cualquiera es un palíndromo (capicúa); por ejemplo radar. 7. Dada una lista de 5 valores determinar si se encuentran ordenados en forma creciente. 8. Dado un número hallar su factorial. 9. Hallar el área de un cuadrado, cuyos lados tienen la longitud de la hipotenusa de un

triángulo rectángulo cuyos catetos son dados. 10. Dados los catetos de un triángulo rectángulo, hallar el área del cuadrado cuyo lado es la

hipotenusa, si esta es mayor que 200, caso contrario, hallar el área del cuadrado cuyo lado es el doble de la hipotenusa.

11. Dada una lista de valores numéricos, hallar su rango, es decir, la diferencia entre su valor máximo y su valor mínimo.

12. Dada una lista de valores enteros positivos, hallar cuantos valores mayores que 1000 hay. Si esta cantidad es menor que 20, calcular su factorial.

13. Dadas las calificaciones de 7 exámenes finales de un estudiante determinar el promedio. 14. Dada una lista de 4 Nºs determinar si el Nº 2 se encuentra en dicha lista. 15. Dados 5 Nºs hallar el máximo. 16. Calcular la sumatoria de los Nºs comprendidos entre 150 y 200. 17. Dada una medida en pies convertir a sus equivalentes:

a) Yardas (1 pie = 12 pulgadas). b) Pulgadas (1 yarda = 3 pies). c) Centímetros (1 pulgada = 2.,54 cm.). d) Metros (1mt. = 100cm.).

Page 3: guia_trabajos_pr__ctico_ayeded_utn.pdf

UNIVERSIDAD TECNOLÓGICA NACIONAL - FACULTAD REGIONAL C. DEL URUGUAY Algoritmos y Estructuras de Datos

Prof. AUS. Pascual Pontelli 2

TRABAJO PRÁCTICO Nº 2 ESTRATEGIA.

1. Determinar si dos números enteros positivos son primos relativos (esto es si no tienen

divisores comunes con excepción del número 1). 2. Dada una lista de valores numéricos, hallar su rango, es decir, la diferencia entre su valor

máximo y su valor mínimo. 3. Dada una lista de valores enteros positivos, hallar cuantos valores mayores que 1000 hay.

Si esta cantidad es menor que 20, calcular su factorial. 4. Diseñar estrategias de los problemas que se detallan, determinando, en caso de ser

necesario, las partes principales de los mismos. a) Dada una lista de valores enteros, (N), emitir el mensaje “Lista Ordenada” si todos los

valores están ordenados en forma creciente, caso contrario, emitir el mensaje “Lista Desordenada”.

b) Idear un problema no computacional y diseñar una estrategia para la resolución del mismo.

c) Construir las estrategias de los dos ejemplos dados en clase sobre el cálculo del área del cuadrado relacionado con un triangulo rectángulo.

1. Escriba en forma imperativa las instrucciones que le daría a una persona para que se comunique con otra desde un teléfono público. Suponiendo que esa persona no encuentra ningún inconveniente para efectuar la llamada.

2. Escriba las instrucciones a seguir para cambiar las ruedas de un auto sabiendo que la rueda tiene 4 tuercas de sujeción.

3. Ídem anterior pero para cocinar una tortilla. 4. Ídem anterior pero para andar en bicicleta.

Page 4: guia_trabajos_pr__ctico_ayeded_utn.pdf

UNIVERSIDAD TECNOLÓGICA NACIONAL - FACULTAD REGIONAL C. DEL URUGUAY Algoritmos y Estructuras de Datos

Prof. AUS. Pascual Pontelli 3

TRABAJO PRÁCTICO Nº 3 SECUENCIA.

1. Leer tres números de a una por vez, calcular su suma y su producto. 2. Dadas las longitudes de los 2 catetos de un triangulo rectángulo, hallar la longitud de la

hipotenusa. 3. Dadas las horas trabajadas por un operario y el valor de las mismas, determinar que

sueldo percibe dicho operario. 4. Hallar el área de un cuadrado, cuyos lados tienen la longitud de la hipotenusa de un

triángulo rectángulo cuyos catetos son dados. 5. Dadas las calificaciones de 4 exámenes finales de un estudiante determinar el promedio. 6. En una carrera de turismo carretera el tiempo se mide en minutos, segundos y centésimas

de segundo y el espacio recorrido se mide en metros. Diseñe un algoritmo para determinar la velocidad promedio de un automóvil en km/hr.

7. Diseñe un algoritmo que determine el porcentaje de varones y de mujeres que hay en un recinto, dado el total de personas, cantidad varones y mujeres.

8. Dados dos números a y b, se desea intercambiar sus valores, utilizando una variable auxiliar.

9. Un millonario excéntrico tenía tres hijos: Carlos, José y Marta. Al morir dejó el siguiente legado: A José le dejó 4/3 de lo que le dejó a Carlos. A Carlos le dejó 1/3 de su fortuna. A Marta le dejo la mitad de lo que le dejó a José. Preparar un algoritmo para darle la suma a repartir e imprima cuanto le tocó a cada uno.

10. Dada una medida en pies convertir a sus equivalentes: a. Yardas (1 pie = 12 pulgadas). b. Pulgadas (1 yarda = 3 pies). c. Centímetros (1 pulgada = 2.,54 cm.). d. Metros (1mt. = 100cm.).

Page 5: guia_trabajos_pr__ctico_ayeded_utn.pdf

UNIVERSIDAD TECNOLÓGICA NACIONAL - FACULTAD REGIONAL C. DEL URUGUAY Algoritmos y Estructuras de Datos

Prof. AUS. Pascual Pontelli 4

TRABAJO PRÁCTICO Nº 4 ESTRUCTURAS CONDICIONALES.

CONDICIONAL SIMPLE

1. Deducir si un numero leído es positivo. 2. Mostrar si un numero es mayor que 10. 3. Leer el nombre y sueldo de una persona mostrar si este gana mas de 500 pesos. 4. Dados dos números si el primero es divisible por el segundo mostrar un mensaje que así lo

indique. 5. Ingresar 1 par de valores, emitirlos y si ambos son positivos, emitir también su promedio. 6. Dados dos números si el primero es divisible por el segundo intercambiarlos.

CONDICIONAL ALTERNATIVO

7. Deducir si un numero leído es positivo o negativo. 8. Dados tres números enteros positivos, determinar cual es el mayor. 9. Leer tres letras, encontrar y visualizar cuál viene primero en el alfabeto. 10. Confeccionar un algoritmo tal que dados dos números enteros cualesquiera devuelva la

suma de los mismos, si se cumple que el primero es menor que el segundo, en caso contrario devolver el producto de los mismos.

11. Se ingresa el nombre, edad y dirección de dos socios, se pide mostrar los datos de socio mas joven.

12. Dados tres nombres de alumnos mostrar si González Pedro se encuentra entre ellos, de lo contrario emitir un mensaje “No existe”.

13. Dado un monto calcular el descuento considerando que por encima de 100 el descuento es del 10% y por debajo es del 2%, Se pide mostrar monto con descuento incluido.

CONDICIONAL MÚLTIPLE

14. Escribir un algoritmo en el que se introduzca el número de un mes (1 a 12) y visualice el Nº de días de ese mes.

15. Emular una calculadora en la cual se ingresan 2 números y el operador ( *, /, +, -) e imprime el resultado.

CONDICIONAL ANIDADOS

16. Determinar si un año dado es bisiesto o no. 17. Leer dos números. Decir si el primero es divisible por el segundo, si esto se cumple decir si

es un número par o impar. 18. Leer un número, si dicho número está comprendido entre 23 y 54, decir si es múltiplo de 3

o de 5.

EJERCICIOS CONDICIONAL 19. Dadas las 4 notas obtenidas por un alumno, calcular e informar su promedio e informar

una leyenda que indique si está aprobado o no. La condición de aprobación es obtener un promedio mayor o igual que 4.

20. Dados 3 números, informarlos en orden creciente. 21. De una prueba de nivel realizada a un alumno se conoce la cantidad total de preguntas

realizadas y la cantidad de respuestas correctas. Informar el nivel registrado de acuerdo a la siguiente escala : - Muy Bueno si el porcentaje es mayor o igual a 90% - Bueno entre 70% y 90% - Regular entre 50% y 70% - Malo si el porcentaje es menor que 50%

22. Una empresa fabrica tapas de material laminado en 2 formatos: cuadrado o rectangular. Cobra $9 el metro cuadrado. Se pide:

a. Ingresar el código de forma: 1-cuadrada, 2- rectangular. b. Si es 1- Ingresar el lado sino ingresar largo y ancho para calcular superficie para

calcular y mostrar el costo total de la tapa.

Page 6: guia_trabajos_pr__ctico_ayeded_utn.pdf

UNIVERSIDAD TECNOLÓGICA NACIONAL - FACULTAD REGIONAL C. DEL URUGUAY Algoritmos y Estructuras de Datos

Prof. AUS. Pascual Pontelli 5

23. Dados los coeficientes de una ecuación de segundo grado, hallar las dos raíces reales o la única raíz. Si no tiene raíces reales emitir una leyenda que lo indique.

Page 7: guia_trabajos_pr__ctico_ayeded_utn.pdf

UNIVERSIDAD TECNOLÓGICA NACIONAL - FACULTAD REGIONAL C. DEL URUGUAY Algoritmos y Estructuras de Datos

Prof. AUS. Pascual Pontelli 6

TRABAJO PRÁCTICO Nº 5 CICLOS. (MIENTRAS Y REPETIR)

1. Dada una secuencia de caracteres acabada en #, mostrar los números (0..9) que en ella

aparecen. 2. Construir un algoritmo que, dada una secuencia de enteros acabada con el valor cero,

devuelva el mayor de ellos. Determinar cuantos números negativos han aparecido. 3. Dada una secuencia de caracteres acabada en punto, obtener un algoritmo que determine

cuantas veces aparece un determinado carácter, el cual será leído previamente. 4. Contar la cantidad de Nºs negativos de una lista que finaliza con el Nº 0. 5. Escribir un algoritmo que permita leer una serie de enteros. Contar el Nº de valores

introducidos y su suma. 6. Dada la siguiente situación: se dispone de un mazo de cartas españolas. Se debe sacar la

primer carta y separarla. Luego sacar de a una carta por vez hasta encontrar una del mismo palo y número mayor a la primera. El problema planteado es determinar cuántas cartas fue necesario extraer del mazo.

7. Dada una lista de valores numéricos, hallar su rango, es decir la diferencia entre su valor máximo y su valor mínimo.

8. Dada una lista de valores enteros positivos, hallar cuántos valores mayores que 1.000 hay. Si la cantidad es menor que 20 calcular su factorial.

9. Se dispone de un conjunto de tarjetas rojas y azules, las cuales están numeradas en forma correlativa. El lote de tarjetas termina con una tarjeta blanca. El problema es determinar de las tarjetas del lote: cuántas son azules y con número par; cuántas son rojas y con número impar, y cuántas son las restantes (excepto la blanca).

10. Cuantos términos de la serie h(n) son necesarios para satisfacer: h(n)=1 + ½ + 1/3 + ... + 1/n > limite, siendo limite un valor conocido.

11. Hay un gran número de cajas cada una de las cuales contienen varias monedas de diferentes valores. Confeccionar un algoritmo que permita auxiliar en la solución del problema que es determinar cuántas cajas como mínimo es necesario abrir para conseguir 100 monedas de 10 centavos.

12. Dada una lista de Nºs terminada en un Nº negativo y un Nº n, se desea saber a)- cuantos Nºs pares < que n se leyeron y de ellos cuantos son múltiplos de 5. b)- emitir el % de los múltiplos de 5 sobre el total de Nºs pares y sobre el total de Nºs leídos. c)- el % de Nº pares sobre el total de leídos.

CICLOS (PARA)

13. Ingresar 5 pares de valores, en cada oportunidad emitir ambos valores y si ambos son

positivos, emitir también su promedio. 14. Calcular la suma y el producto de los números pares comprendidos entre 20 y 500. 15. Leer un lote de 475 valores de a uno por vez. Determinar y emitir el valor máximo del

conjunto y el orden en que fue leído. Si hay mas de un máximo considerar solo el primer valor hallado.

16. Ingresar un Nº y un carácter y mostrar dicho carácter repetido tantas veces como indica el Nº.

17. Hacer un programa que lea 100 Nºs, indique cuáles son múltiplos de 2 y contarlos. 18. Hacer un programa que lea 8 caracteres e indique que cantidad de ‘*’ y que cantidad de

letras ‘a’ aparecen. 19. ¿A cuánto asciende la suma de los números pares comprendidos entre 300 y 1232? 20. Se efectúa una encuesta entre 120 consumidores de cigarrillos. Las respuestas están

codificadas como 1, 2 ó 3 según sea la marca elegida. Preparar un algoritmo para ingresarle las 120 respuestas, y muestre por pantalla el número de la marca preferida.

21. Desarrollar un algoritmo que determine en un conjunto de 100 números naturales: a) Cuántos son mayores que 15. b) Cuántos son mayores que 50. c) Cuántos están comprendidos entre 25 y 45.

Page 8: guia_trabajos_pr__ctico_ayeded_utn.pdf

UNIVERSIDAD TECNOLÓGICA NACIONAL - FACULTAD REGIONAL C. DEL URUGUAY Algoritmos y Estructuras de Datos

Prof. AUS. Pascual Pontelli 7

22. Obtener un algoritmo que permita calcular la siguiente serie: h(n)=1 + ½ + 1/3 + ... + 1/n

23. Se leen 50 pares de Nºs, c/u de los cuales tienen 2 valores: x e y distintos. Se pide contar en cuantos pares x>y y en cuantos y>x.

24. En un colegio de 1000 alumnos se ha registrado para cada uno de ellos un código señalando su comportamiento académico. Dicho código puede tomar valores 1, 2 o 3. Indicar cuántos alumnos obtuvieron cada una de las calificaciones tratando de a una calificación por vez.

25. En una fábrica hay 4.000 obreros distribuidos en cinco secciones. Se requiere determinar cuántos obreros hay y el promedio de edad de los mismos por cada sección. Asumir que se tiene como entrada los siguientes datos para cada obrero: Nº de empleado, sección a la que pertenece y edad.

26. Construir un algoritmo que muestre por pantalla las tablas de multiplicar usuales hasta el Nº 10. Ej.

5 por 1 es 5 5 por 2 es 10 5 por 3 es 15

27. Construir un algoritmo que muestre por pantalla las tablas de multiplicar usuales para valores comprendidos entre a y b. (a<b).

28. Escribir un programa que escriba todos los números primos comprendidos entre a y b.

Page 9: guia_trabajos_pr__ctico_ayeded_utn.pdf

UNIVERSIDAD TECNOLÓGICA NACIONAL - FACULTAD REGIONAL C. DEL URUGUAY Algoritmos y Estructuras de Datos

Prof. AUS. Pascual Pontelli 8

TRABAJO PRÁCTICO Nº 6 SUBPROGRAMAS.

PROCEDIMIENTOS.

1. Escribir un procedimiento Geometría tal que dado el alto y ancho de un rectángulo calcule el área y el perímetro.

2. Dados tres números enteros distintos, obtener el mayor de las siguientes formas: a- Aplicando un procedimiento sin parámetros. b- Ídem con parámetros valor. c- Ídem con parámetros variables.

3. Escribir un procedimiento que calcule el valor del trinomio de 2do. grado ax2 + bx + c y devuelva el resultado en y.

4. Escribir un procedimiento que calcule el factorial de un Nº entero usando parámetro valor y variable.

5. Escribir los procedimientos correspondientes a la carga y visualización de un arreglo de x elementos.

6. Escribir un programa que acepte un arreglo (no ordenado), un valor cualquiera y obtenga la posición del elemento si lo encontró. (Utilizar procedimientos para cada operación).

7. Utilizar el procedimiento gettime para comparar los tipos de ordenamiento (selección, burbuja e inserción). ¿Cuál es el mejor para ordenar un arreglo de 1000 elementos?. Utilizar función random para generar los valores.

8. Escribir un programa tal que dados 2 arreglos uno de Nombres y otro de Sueldos: a- los cargue. b- los muestre por orden alfabético. c- los muestre por orden de sueldo (de menor a mayor). d- dado un nombre consulte para determinar si está o no.

FUNCIONES.

1. Diseñar una función que calcule potencias de forma xn y un programa que haga uso de la misma, para distintos valores de x y n.

2. Escribir una función que tenga un parámetro de tipo entero y que devuelva la letra P si el Nº es positivo y N si es negativo o cero.

3. Escribir una función lógica de dos parámetros enteros que devuelva True si uno divide al otro y False en caso contrario.

4. Escribir una función lógica digito, que determine si un carácter es uno de los dígitos de o a 9.

5. Escribir una función lógica vocal que determine si un carácter es una vocal. 6. Escribir una función que permita calcular la suma 1+2+3+ ... + n. 7. Escribir una función tipo calculadora donde se le da como entrada dos números y el tipo de

operación y esta devuelve el resultado. 8. Escribir una función que dado un número entero, devuelva una señal que indique si dicho

número es primo o no. 9. Escribir una función que dados 2 números, calcule el porcentaje que el primero representa 10. respecto del segundo. 11. Escribir una función que dados a y b devuelva el cociente de la división entera, sin utilizar

el operador correspondiente del lenguaje. Validar los tipos de datos de entrada. 12. Escribir una función que dados a y b devuelva el resto de la división entera, sin utilizar el

operador correspondiente de lenguaje. Validar los tipos de datos de entrada.

Page 10: guia_trabajos_pr__ctico_ayeded_utn.pdf

UNIVERSIDAD TECNOLÓGICA NACIONAL - FACULTAD REGIONAL C. DEL URUGUAY Algoritmos y Estructuras de Datos

Prof. AUS. Pascual Pontelli 9

TRABAJO PRÁCTICO Nº 7 ARREGLOS.

1. Leer un vector de 100 Nºs reales, un componente por vez. Emitir la sumatoria de sus

componentes. 2. Sea un lote de Nºs enteros positivos que finaliza con un cero que no debe ser procesado.

Generar un vector con dichos valores y calcular la productoria de sus componentes. 3. Leer un vector de N elementos, de a uno por vez. Generar y emitir la sumatoria de sus

componentes de posición par. 4. Generar y emitir el vector A = (1,0,1,0,1,0, ... ) de N elementos. 5. Leer un vector de 10 elementos reales y emitir las siguientes leyendas según,

corresponda: “El vector tiene todas sus componentes positivas”, “El vector tiene componentes negativas”, “El vector tiene algún cero”.

6. Leer un arreglo de 20 elementos de tipo carácter. Generar y emitir otro vector B tal que B[i] = A[i].

7. Leer un vector de N elementos y emitir la posición que ocupa el mayor de ellos. Si hay dos o más valores iguales, se debe emitir la posición menor.

8. Leer un vector de N elementos. Emitir el valor mínimo y la cantidad de veces que se repitió ese valor.

9. Leer un vector con la edad de un grupo de x cantidad de personas. Se pide mostrar la cantidad de jóvenes considerando a una persona joven si su edad esta entre 20 y 40 años.

10. Codificar un programa que acepte los valores de ventas de una librería en el año 2000. Se pide: A- Definir la estructura capaz de almacenar dichas ventas. B- Cual fue la venta en el mes 10. C- Cual fue el promedio de ventas de ese año. D- En que mes se produjo la mayor venta y de cuanto fue. E- Ídem para la menor.

11. Escribir un programa que invierta el contenido de un arreglo de n Nº enteros tal que el primero se vuelve el último, el segundo el penúltimo, y así sucesivamente.

12. Dados dos arreglos A y B ordenados alfabéticamente de cardinalidad m y n respectivamente, formar un tercer arreglo C = A + B, también ordenado alfabéticamente.

13. Dado un texto de un telegrama que termina en punto: contar la cantidad de palabras que posean más de 10 letras y el % que representan

estas sobre el total. informar la cantidad de veces que aparece cada vocal informar el porcentaje de espacios en blanco. Nota: Las palabras están separadas por un espacio en blanco.

14. Dado un texto que finaliza en punto, se pide: la posición inicial de la palabra más larga, la longitud del texto, cuantas palabras con una longitud entre 8 y 16 caracteres poseen más de tres veces la

vocal “a”, Nota: - Las palabras pueden estar separadas por uno o más espacios en blanco. - Pueden haber varios espacios en blanco antes de la primera palabra y también después de la

última. - Se considera que una palabra finaliza cuando se encuentra un espacio en blanco o un signo

de puntuación.

Page 11: guia_trabajos_pr__ctico_ayeded_utn.pdf

UNIVERSIDAD TECNOLÓGICA NACIONAL - FACULTAD REGIONAL C. DEL URUGUAY Algoritmos y Estructuras de Datos

Prof. AUS. Pascual Pontelli 10

TRABAJO PRÁCTICO Nº 8 MATRICES.

1. Calcular la media de una lista de veinticinco alumnos de una clase de informática con

notas en cuatro asignaturas. 2. Una empresa con 20 sucursales que vende distintos tipos de artículos (30). Se desea

acumular cantidad de ventas por sucursal y por artículo. 3. Dada una matriz de 5 filas y 10 columnas: a- Escribir el algoritmo necesario para cargar la

matriz con valores. B- Determinar la sumatoria de c/u de las columnas. C- Mostrar el mayor valor de c/u de sus columnas. D- Mostrar la posición (F,C) del menor valor de la matriz.

4. Dada una matriz rectangular realizar un programa que devuelva el mayor de los elementos contenidos en ella, considerando solamente aquellos en los cuales la suma de sus subíndices es par. Es decir [1,1], [1,3], [1,5] ... [2,2], etc.

5. Se tiene una matriz de 150 filas y 12 columnas de celdas reales. Las filas representan 150 clientes y las columnas los 12 meses del año. Cada celda contiene el monto total facturado a cada cliente c/mes. Se pide: a- Mostrar el monto facturado al cliente 142 en el mes de Agosto. b- Mostrar el Nº de cliente que registró el mayor monto de facturación mensual. C- Mostrar en que mes se registró la menor facturación mensual para un cliente.

6. Se tiene un listado con los siguientes datos: número de alumno ( 1 a n ) , número de materia ( 1 a m ), nota ( 0 a 10 ). a) El mismo número de alumno y de materia puede aparecer más de una vez. b) El listado no está ordenado, ni necesariamente completo. Esto último quiere decir que puede ser que un alumno no haya cursado una o más materias, y por lo tanto no existan los datos correspondientes en el listado. Se pide : (1) Crear una estructura bidimensional que almacene el promedio por materia de cada alumno e informarla asignándole en la impresión un guión al caso de falta de datos mencionado. (2) Informar el porcentaje de alumnos que cursó cada materia y el promedio general por materia considerando los alumnos que la cursaron. (3) Informar la cantidad de materias que cursó cada alumno y el promedio que obtuvo considerando las materias que cursó.

7. Una empresa de transporte de pasajeros de larga distancia posee micros de 4 categorías y viaja a 250 localidades de zonas turísticas del país. No necesariamente todas las temporadas se habilitan las 4 categorías, ni hay viajes a todas las localidades posibles. a) Se dispone de un registro de todos los pasajes vendidos en una temporada consistente en: código de categoría (a, b, c, d y código de destino (1 a 250 ) y de un listado ordenado por código del nombre de cada localidad de destino. Se pide informar : (1) La cantidad de pasajeros por localidad, por categoría. (2) La cantidad de pasajeros por localidad. (3) La cantidad de pasajeros por categoría. (4) El nombre de la localidad a la que viajó la mayor cantidad de pasajeros. (5) El nombre de la localidad a la que viajó la menor cantidad de pasajeros.

Page 12: guia_trabajos_pr__ctico_ayeded_utn.pdf

UNIVERSIDAD TECNOLÓGICA NACIONAL - FACULTAD REGIONAL C. DEL URUGUAY Algoritmos y Estructuras de Datos

Prof. AUS. Pascual Pontelli 11

TRABAJO PRÁCTICO Nº 9 MÉTODOS DE ORDENAMIENTO Y BÚSQUEDA.

1. Hacer un algoritmo que:

Lea una lista de números de teclado que culmina con uno negativo. Los ordene en forma creciente y Visualice la lista ordenada. Buscar si existe el Nº 27 en la lista.

2. Se lee un vector de Nºs enteros y se desea saber si entre dichos números se encuentra un valor leído previamente. En caso afirmativo, visualizar su posición en la lista. Resolver el problema por: a- Búsqueda secuencial. b- Búsqueda binaria.

3. Se desea realizar un programa que lea una lista de letras minúsculas, que las visualice, que las ordene en modo decreciente, que visualice la lista ordenada, que busque si la ‘z’ esta en la lista.

4. Se leen dos listas de Nºs enteros A y B de 10 y 6 elementos respectivamente. Se desea: a- Ordenar c/u de las listas. B- Crear una lista C por intercalación de A y B. c- Localizar si existe en C, el Nº 255, visualizar el mensaje ‘Existe’ o ‘No existe’ según corresponda.

5. Se lee una lista de Nºs por teclado, se desea saber si entre dichos Nºs se encuentra el 333, en caso afirmativo visualizar su posición en la lista. Resolver por búsqueda binaria y secuencial.

6. Se tiene la siguiente información sobre pacientes de un instituto: Nombre, dirección, si tiene obra social. A- Imprimir toda la información ordenada alfabéticamente. B- Dado el nombre de un paciente determinar si tiene obra social. C- Mostrar todos los pacientes con Obra Social Dasuten.

7. En un comercio se tienen los siguientes datos sobre distintos artículos: cod_art, descripción y precio. Se pretende:

- Un listado ordenado por código de artículo - Un listado ordenado según la descripción. - Mostrar los códigos de articulo cuyos precios superen los $ 2.00 ordenados

alfabéticamente. 8. Se tiene una planilla con la programación de una radio, en la misma se llevan los siguientes

datos: nombre programa, hora emisión, cantidad total encuestados (por programa), cantidad oyentes (por programa). Se pide: A- Listado ordenado por nombre de programa con sus datos respectivos. a. Mostrar el programa que se escucha en esa radio a las 15 hs. b. Mostrar horario de emisión del programa los incorregibles y % de oyentes que lo

siguen en función de la cantidad de encuestados. 9. Una empresa de colectivos de larga distancia posee los sig. datos sobre sus pasajeros:

- Nombre de la persona - Numero de asiento - Monto pasaje (puede variar) - Destino

Se pide: a- Listado ordenado por numero de asiento b- Monto total de pasajes vendidos. c- cantidad de personas que viajan a la ciudad X.

10. Se tiene una clase de 25 estudiantes, para cada uno se almacenan los sig. datos: nro. Estudiante, nombre y nota. Se pide:

- Listar los alumnos con sus respetivas notas ordenados. - Nro. Estudiante con mayor nota. - Cantidad alumnos que la obtuvieron. - Nota que obtuvo Carla Sánchez.

11. En una librería se lleva el stock de libros, de cada libro se tiene: titulo, autor, categoría, stock y precio unitario. Se pide:

- Mostrar todos los libros de la autora Ágatha Cristie, mostrar además a que categoría pertenece dicha autora y el stock valorizado total.

- Emitir listado ordenado por categoría y autor.

Page 13: guia_trabajos_pr__ctico_ayeded_utn.pdf

UNIVERSIDAD TECNOLÓGICA NACIONAL - FACULTAD REGIONAL C. DEL URUGUAY Algoritmos y Estructuras de Datos

Prof. AUS. Pascual Pontelli 12

- Listar todos los libros que empiezan con “LA”. 12. Se tienen los datos pertenecientes a los clientes de una empresa comercial: Nro. De

cuenta, apellido, dirección, fecha de último pago y saldo. Se pide confeccionar un algoritmo que permita listar los clientes cuyos apellidos comiencen con una letra dada y teniendo saldos mayores a cero, no hayan efectuado pagos dentro de los 30 últimos días a la fecha de emisión de listados.

Page 14: guia_trabajos_pr__ctico_ayeded_utn.pdf

UNIVERSIDAD TECNOLÓGICA NACIONAL - FACULTAD REGIONAL C. DEL URUGUAY Algoritmos y Estructuras de Datos

Prof. AUS. Pascual Pontelli 13

TRABAJO PRÁCTICO Nº 10 REGISTROS.

1- Escribir una declaración de tipo registro que almacene la sig. información sobre un disco de audio: titulo, autor, año de publicación y duración en segundos. 2- Realizar la declaración de tipo registro para un automóvil: los campos son marca, modelo, año, color, Nº de puertas y precio. 3- Escribir un prg. que cargue y visualice la información de los registros dados en los puntos 1 y 2. 4- En un edificio se administran sesenta departamentos; con el fin de cobrar a cada dueño la cuota de gastos correspondiente al último mes. Se registran los gastos de: energía eléctrica, gas, guardias, lavandería y conserjería de cada departamento. Crear la estructura que lo almacene, el proceso de carga y emitir al final un listado con los

importes que por cada concepto debe pagar cada propietario, además utilizar un vector auxiliar para cargar el importe total que se debe pagar por departamento.

5- En un centro estadístico se registran datos de personas para conocer distintas características físicas (nombre, edad, peso, altura). Realizar un programa que cargue los datos y brinde la siguiente información:

a) Cantidad de personas con más de sesenta años. b) Cantidad de mujeres de mas de 1,70m. c) Porcentaje de personas con menos de 50Kg. de peso.

TRABAJO PRÁCTICO ARREGLO DE REGISTROS

1- Un arreglo de registros contiene la descripción de personas a efectos estadísticos, Cada

registro tiene los campos: nombre, edad, peso, sexo, altura, color de piel, color de ojos y nacionalidad. Se pide:

- Cantidad de personas con más de sesenta años. - Cantidad de mujeres de mas de 1,70m. - Porcentaje de personas con menos de 50Kg. de peso. - % de hombres de origen cubano. - % de mujeres argentinas. - % de personas con menos de 30 años y ojos violetas. 2- Supongamos que definimos un arreglo de 1000 pólizas de seguro de vida, cada una posee Nº

de póliza, nombre del asegurado, dirección, año de nacimiento, cantidad asegurada y cuota. Codificar un algoritmo que permita ingresar pólizas en la estructura anterior. Además se pide:

- Mostrar los nombre y direcciones de las personas que cumplen 70 años en el corriente año.

- Mostrar las personas cuya cuota es menor a $ 30.00. - Mostrar las personas que tengan asegurada un monto mayor a $100.000

ordenados alfabéticamente - Mostrar si Pedro Fernández está asegurado en la compañía.

3- Se tiene una clase de 30 estudiantes, para c/u se almacenan los sig. datos: - Nro_estudiante - Nombre - Nota Se pide:

a- Lista de alumnos con sus respectivas notas ordenados alfabéticamente. b- Nro. de estudiante con mayor nota. c- Nombre de estudiante de menor nota. d- Nota que obtuvo la alumna Laura Suárez.

4- Escribir un programa que lea los valores de c/campo de un registro de stock de un almacén. Los campos son:

- Cod_art: integer; - Descripcion: string [30]; - Cantidad: word; (0 ..65535)

Page 15: guia_trabajos_pr__ctico_ayeded_utn.pdf

UNIVERSIDAD TECNOLÓGICA NACIONAL - FACULTAD REGIONAL C. DEL URUGUAY Algoritmos y Estructuras de Datos

Prof. AUS. Pascual Pontelli 14

- Precio_unitario: real; Se pide además: a- Cargar datos hasta que el cod_art = 0. b- Mostrar del articulo mas caro, cantidad en existencia. c- Dado un cod_articulo ver si existe. d- Mostrar si este almacén vende queso “Don Bautista”. e- Mostrar el articulo con menor existencia. f- Mostrar cual es el articulo mas barato.

5- En una librería se almacenan los datos de x cantidad de libros, por cada libro se tiene la siguiente información: código y stock. Realizar un programa que informe cuando se deba reponer stock de cada libro, considerando stock mínimo = 3 libros.

6- Se leen los nombres, edades y alquileres que pagan los inquilinos de un edificio. Se pide calcular: a- Total recaudado por el consorcio en concepto de alquileres. b- Nombre del inquilino que paga el alquiler mas caro. c- Nombre y edad del inquilino más viejo. d- Nombre y edad del inquilino más joven.

7- En una empresa se guardan los códigos de empleados, edades, los sueldos y la antigüedad en años (Nº entero). Se pide calcular: a- Sueldo del empleado más antiguo y edad. b- Sueldo del empleado más nuevo y edad. c- Promedio de sueldos. d- Promedio de edades.

8- De cada alumno de una materia ‘x’ se registra Nº de alumno, nota y sexo. Se desea saber: a- cuantos varones aprobaron (nota>=4), b- que % de mujeres sacó 10, c- % de desaprobados.

9- En una distribuidora se lleva mensualmente, la siguiente información: código de producto, cantidad vendida, costo de fabricación del producto (por unidad), precio unitario de venta al público. Se desea calcular: a- Cual fue el producto mas vendido. b- Cual fue la ganancia que se obtuvo al vender dicho producto (en x cantidad). c- Cual es el costo unitario del producto mas caro.

10- Se tiene una agenda telefónica con los siguientes datos: Nombre, dirección, Nº teléfono (puede o no tener), se pide: a- Listado de personas con Nº telefónico. b- Listado de personas sin Nº telefónico, con sus respectivas direcciones. c- Dada una persona mostrar su dirección y Nº de teléfono si tiene.

11- Se tiene una lista de precios con código de articulo, descripción, precio. Se pide: a- lista de precios completa. b- Listado de todos los artículos que empiezan con b. c- Consulta de un precio según el cod. de articulo. d- Cual es el articulo mas caro.

Page 16: guia_trabajos_pr__ctico_ayeded_utn.pdf

UNIVERSIDAD TECNOLÓGICA NACIONAL - FACULTAD REGIONAL C. DEL URUGUAY Algoritmos y Estructuras de Datos

Prof. AUS. Pascual Pontelli 15

TRABAJO PRÁCTICO Nº 11 RECURSIVIDAD.

1. Realizar una función recursiva que calcule los seis primeros términos de la serie de

Fibonacci. 0, 1, 1, 2, 3, 5. 2. Realizar una función recursiva tal que reciba un número y muestre su factorial. 3. Escribir una función recursiva que calcule la suma: 1 + 2 + 3 + 4 + ... + (n-1) + n. 4. Escribir una función recursiva que calcule la potencia de un Nº entero. 5. Escribir un procedimiento recursivo tal que reciba una cadena y devuelva su inversa.

Obtener un subprograma recursivo que imprima los dígitos de un número entero positivo en orden inverso.

Page 17: guia_trabajos_pr__ctico_ayeded_utn.pdf

UNIVERSIDAD TECNOLÓGICA NACIONAL - FACULTAD REGIONAL C. DEL URUGUAY Algoritmos y Estructuras de Datos

Prof. AUS. Pascual Pontelli 16

TRABAJO PRÁCTICO Nº 12 PILAS.

1. Escribir los algoritmos correspondientes a las operaciones sobre pilas (implementada en

arreglos). c. Inserción en cabeza. d. Supresión en cabeza. e. Es_vacía (determina si una pila es no vacía). f. Pila_vacía (crea una pila vacía). g. Cima (devuelve el ultimo elemento insertado en la pila). h. Ver_Pila (muestra el contenido de la pila). i. Llenar_pila (introduce una serie de elementos en una pila).

2. Realizar un subprograma que obtenga el número de copias de un determinado elemento en una pila dada.

3. Utilizando las operaciones sobre pilas, desarrollar un subprograma que permita eliminar de una pila de enteros todos los números impares.

4. Haciendo uso de las operaciones sobre pilas, realizar un programa que permita cambiar todas las apariciones de un determinado elemento de la pila por otro dado.

5. Diseñar un algoritmo sencillo para invertir el contenido de una pila cualquiera. 6. Obtener un algoritmo que determine si una cadena de caracteres es o no un palíndromo. 7. Escribir un algoritmo para determinar si una hilera de caracteres de entrada es de la forma

xCy, donde x es el inverso de y. Ej. mamaCamam. 8. Leer una palabra y visualizarla en orden inverso. 9. Escribir un segmento de programa que elimine el elemento justo debajo de la cima de la

pila. 10. Escribir una función que obtenga el íesimo elemento a partir de la cima de una pila, sin

borrarlo.

Page 18: guia_trabajos_pr__ctico_ayeded_utn.pdf

UNIVERSIDAD TECNOLÓGICA NACIONAL - FACULTAD REGIONAL C. DEL URUGUAY Algoritmos y Estructuras de Datos

Prof. AUS. Pascual Pontelli 17

TRABAJO PRÁCTICO Nº 13 COLAS.

1. Escribir los algoritmos correspondientes a las operaciones sobre colas (implementada en

arreglos). j. Inserción en cola. k. Supresión en cabeza. l. Es_vacía (determina sí una cola está o no vacía). m. Cola_vacía (crea una cola vacía). n. Primero (devuelve el primer elemento de la cola).

2. Realizar dos operaciones, una para mostrar el contenido de una cola y otra para introducir una serie de elementos en ella.

3. Utilizando las operaciones básicas de colas y pilas, escribir un algoritmo que invierta el contenido los elementos de una cola.

4. Escribir un programa que lea una cadena de caracteres, introduciendo cada carácter en una pila a medida que se lee y añadiéndolo simultáneamente a una cola. Cuando se encuentra al final de la cadena, utilice las operaciones básicas de pilas y colas para determinar si la cadena es un palíndromo.

5. Usando los procedimientos y funciones que implementan las operaciones permitidas para pilas y colas; escriba los procedimientos que permitan efectuar las siguientes tareas: (Cuando escriba los procedimientos tenga en cuenta chequear apropiadamente si las estructuras están llenas o vacías cuando corresponda hacerlo). a) Mueva todos los elementos desde una pila hacia una cola. b) Mueva todos los elementos desde una cola hacia una pila. c) Vacíe una pila sobre otra, de tal manera que los elementos agregados a la segunda

mantengan el mismo orden relativo que tenían en la primera. d) Vacíe una pila sobre otra, de tal manera que los elementos agregados a la segunda estén

ordenados al revés de lo que estaban en la pila original. e) Comience con una pila vacía y una cola vacía, use la pila para invertir el orden de todos los

elementos de la cola. f) Comience con una pila vacía y una cola vacía, use la cola para invertir el orden de todos

los elementos de la pila. 6. Escribir un programa que lea una cadena de caracteres, compuesta de dos partes separadas

entre sí por dos puntos ‘:’. Como resultado el programa deberá indicar cual de las siguientes condiciones se cumple en la cadena ingresada:

o. No se encontraron dos puntos en la línea. p. La parte de la izquierda (antes de los dos puntos), es más larga que la de la

derecha. q. La parte de la derecha (después de los dos puntos), es más larga que la de la

izquierda. r. Las partes derecha e izquierda tienen igual longitud pero son diferentes. s. Las partes derecha e izquierda son exactamente iguales.

Use una cola para mantener la parte izquierda de la línea mientras analiza la parte derecha.

Page 19: guia_trabajos_pr__ctico_ayeded_utn.pdf

UNIVERSIDAD TECNOLÓGICA NACIONAL - FACULTAD REGIONAL C. DEL URUGUAY Algoritmos y Estructuras de Datos

Prof. AUS. Pascual Pontelli 18

TRABAJO PRÁCTICO Nº 14 LISTAS.

1. Desarrollar los algoritmos correspondientes a las operaciones usuales sobre listas,

a- crear una lista vacía. b- recorrer una lista. c- insertar un nuevo elemento detrás de uno dado. d- Insertar un nuevo elemento delante de uno dado. e- borrar un elemento determinado.

2. Dada una lista enlazada, cuyos nodos tienen la estructura (información, siguiente), diseñar un procedimiento que cuente el Nº de nodos de la lista.

3. Escribir un programa tal que dada una lista de caracteres, borre de ella las vocales. 4. Dada una lista de enteros generar dos listas uno con Nºs impares y otra con los pares. 5. Escribir un procedimiento que modifique el campo información de un nodo j-esimo de una lista

enlazada. 6. Construir un procedimiento que realice una inserción inmediatamente antes del nodo i-esimo

de una lista. (Buscar por campo). 7. Realizar un procedimiento que muestre los elementos de una lista de enteros y su suma. 8. Construir una lista de registros con los siguientes campos (Nombre, edad, edo_civil, dirección),

eliminar el nodo que contiene los datos de Roberto González. 9. Escriba un algoritmo que realice c/u de las sig. operaciones:

a- Concatenar dos listas. b- Liberar todos los nodos de una lista. c- Formar una lista que contiene la intersección de los elementos de dos listas.

Page 20: guia_trabajos_pr__ctico_ayeded_utn.pdf

UNIVERSIDAD TECNOLÓGICA NACIONAL - FACULTAD REGIONAL C. DEL URUGUAY Algoritmos y Estructuras de Datos

Prof. AUS. Pascual Pontelli 19

Trabajo Práctico Nº 15 Pilas, Colas y Listas.

1. Se tiene en una lista implementada en arreglo los datos pertenecientes a los clientes de

una empresa comercial ordenados por orden alfabético según sus apellidos. De cada cliente se conoce: Nro. de cuenta: 0 .. 999; Apellido: Cadena ; Dirección: Cadena; Fecha último pago: TipoFecha y Saldo: Real. Se requiere la confección de un algoritmo que permita listar los clientes cuyos apellidos comiencen con una letra dada, y teniendo saldos mayores que cero no hayan efectuado pagos dentro de los últimos treinta días a la fecha de emisión del listado. (lista)

2. En una lista se tiene almacenado el stock de cada uno de los artículos que vende un supermercado, ordenados por código de artículo. Cada elemento de la lista tiene la siguiente forma:

- Código de Artículo - Descripción - Sucursal - Stock mínimo - Stock actual - Siguiente artículo.

Sabiendo que el supermercado cuenta con tres sucursales, se pide generar un procedimiento que tomando la lista original, genere tres listas - una por sucursal- ordenadas por descripción del artículo.

3. Efectuar un procedimiento que reciba dos listas diferentes de artículos, ordenados por descripción, y devuelva una única lista ordenada, referenciada por el primer apuntador recibido. Cada elemento de la lista contiene los siguientes campos:

- Código de artículo - Descripción - Precio - Siguiente

Nota: Si existe algún artículo duplicado, éste deberá aparecer una única vez en la lista devuelta.

4. Se tiene una lista donde cada elemento contiene el apuntador al Primer elemento de otra Lista (es decir que cada nodo de la lista madre representa a su vez una nueva lista). Los nodos de las "sublistas" contienen un valor numérico. Se pide recorrer la estructura, calculando la sumatoria de estos valores y asignándolos a los nodos correspondientes de la lista madre. Los campos de los nodos de la lista madre son: -Primero (apuntador al primero de una sublista) y -Total (Campo en el cual hay que asignar la sumatoria de los valores de los nodos de la sublista correspondiente).

5. Realizar un procedimiento que permita la reserva de pasajes correspondientes a una empresa turística de colectivos. El mismo debe utilizar las siguientes estructuras.

Una COLA que contiene los movimientos que ingresan al sistema. Estos son de dos tipos: a) Requerimiento de reserva de pasaje, b) Cancelación del asiento reservado. Los datos de cada elemento de la Cola son: -Nombre del interesado. -Tipo de Movimiento (Reserva o Cancelación)

Una LISTA de las personas que tienen su pasaje reservado, ordenada por número de asiento. Los datos de cada elemento de la Lista son: -Nombre del pasajero. -Número del Asiento.

Una PILA que contiene los números de asientos libres, es decir que no se encuentren ocupados.

Page 21: guia_trabajos_pr__ctico_ayeded_utn.pdf

UNIVERSIDAD TECNOLÓGICA NACIONAL - FACULTAD REGIONAL C. DEL URUGUAY Algoritmos y Estructuras de Datos

Prof. AUS. Pascual Pontelli 20

Los datos de cada elemento de la Pila son: -Número de asiento. *Como parámetros (de entrada-salida) al procedimiento se deberán poner las tres estructuras. Funcionamiento: Se da de baja a un elemento de la Cola. Si es una reserva, se toma un asiento de la Pila (si no está vacía) y se lo da de alta en la lista, en el lugar correspondiente de acuerdo a dicho número. Si la pila está vacía se ingresa el movimiento nuevamente en la cola y se lo marca como “ya atendido”. Si el movimiento es una cancelación, se da de baja al pasajero en la Lista y se da de alta el número de asiento en la Pila.

6. Dadas las siguientes estructuras: Una Cola de Listas de Artículos comprados por un cliente, con los siguientes datos por cada elemento:

- Nombre del cliente. - Apuntador al primer elemento de la Lista de Artículos

(Puede haber más de un elemento con el mismo Nombre de Cliente.) Listas de Artículos Comprados, una por cada elemento de la Cola, con la siguiente información por cada elemento: - Número de artículo. - Cantidad comprada. - Precio Unitario. Una Lista de Clientes, (sobre punteros) ordenada por Nombre de Cliente, que contiene los montos totales de compra de cada cliente, con la siguiente estructura: - Nombre del Cliente. - Monto total de compra.

A) Hacer un procedimiento que tome (baja a la cola) cada elemento de la Cola (es decir cada Lista de Artículo), calcule el monto total de la compra y lo ingrese a la Lista de Clientes, teniendo en cuenta que: - Si el cliente no existe, se lo debe dar de alta en dicha lista, en el lugar correspondiente. - Si el cliente ya está en la lista, se deberá sumar el monto calculado al monto que ya tenía. * Una vez calculado el monto de compra, eliminar la Lista de Artículos tratada. B) Hacer un procedimiento de carga de las Listas de Artículos y el alta de estas listas a la Cola. Para ello se ingresarán los datos: - Nombre del Cliente (por cada elemento a dar de alta en la cola) - Artículo, Cantidad y Precio (N veces por cada cliente).

7. Una empresa privada de construcciones posee un plan de viviendas para la adquisición de departamentos en cuotas. Las personas interesadas eligen un número de departamento de acuerdo al piso y la ubicación que desean. Si el departamento no ha sido vendido ya, la persona ingresa como Titular, in caso contrario se anota en una cola de suplentes, por si el titular renuncia o no puede pagar sus cuotas. La información relativa a esta situación se representa mediante las siguientes estructuras. Una Lista, donde cada elemento contiene el número de departamento asociado con los datos del titular y la Cola de suplentes:

- Nº. de departamento. - Nombre del Titular. - Teléfono. - Monto pagado por el titular. - cola de suplentes.

La lista se encuentra ordenada por Nº de departamento y no se debe perder dicho orden. Cada una de las Colas que están en la Lista anterior puede guardar información de hasta 10 suplentes. El contenido de cada uno de sus elementos es el siguiente: - Nombre de la persona suplente. - Teléfono. Se pide declarar las estructuras y realizar los procedimientos necesarios para satisfacer los requerimientos que se detallan a continuación:

Page 22: guia_trabajos_pr__ctico_ayeded_utn.pdf

UNIVERSIDAD TECNOLÓGICA NACIONAL - FACULTAD REGIONAL C. DEL URUGUAY Algoritmos y Estructuras de Datos

Prof. AUS. Pascual Pontelli 21

1: Alta del titular o suplente: Se deben ingresar por pantalla los datos: nº departamento, Nombre de la persona y teléfono. Si el nº de departamento no está en la lista, se lo da de alta en el lugar correspondiente junto con los demás datos de la persona y se crea la cola correspondiente, vacía. Si está, se da de alta a la cola de espera. 2: Baja del titular: Se debe ingresar por pantalla el Nombre de la persona Titular. Se busca el nodo de la lista y se borran los datos de la persona luego, se saca el primer suplente de la cola y se lo asigna como titular. Si la cola estuviese vacía, se da de baja al nodo de la lista. En todos los casos se deba mostrar por pantalla el monto pagado hasta el momento. 3: Pago de cuota: Se debe ingresar por pantalla: Nombre del titular e Importe que paga. Se busca la persona y se le suma el importe al monto pagado (la persona debe ser Titular).

Page 23: guia_trabajos_pr__ctico_ayeded_utn.pdf

UNIVERSIDAD TECNOLÓGICA NACIONAL - FACULTAD REGIONAL C. DEL URUGUAY Algoritmos y Estructuras de Datos

Prof. AUS. Pascual Pontelli 22

TRABAJO PRÁCTICO Nº 16 ÁRBOLES.

1. Escribir un algoritmo que inserte en un árbol binario de búsqueda vacío los siguientes

nodos: 3,1,4,6,9,2,7,5. 2. Realizar dos algoritmos, el primero que devuelva el hijo derecho de un nodo y el segundo,

el izquierdo. 3. Realizar un algoritmo para insertar un nodo en un árbol binario de búsqueda. 4. Construir dos algoritmos para calcular el máximo y mínimo elemento de un árbol binario de

búsqueda. 5. Construir los algoritmos prefijo, postfijo e infijo para recorrer el siguiente árbol binario.

6. Recorrer en los tres modos el siguiente árbol:

7. Escribir procedimientos tal que dado un árbol binario, calcule: a- el número de nodos del árbol. b- el número de hojas del árbol. c- la altura del árbol.

8. Se dispone de un árbol binario de elementos tipo integer. Escribir funciones que calculen: a- la suma de sus elementos. b- la suma de sus elementos que son múltiplos de 3.

9. Construir un algoritmo tal que elimine un nodo c de un árbol binario. Considerar los tres casos. (nodo c no se encuentra, nodo c tiene 0 o un subárbol, nodo de clave c tiene dos subárboles).

10. Realizar un procedimiento que elimine un árbol binario. 11. Realizar una función tal que dado un nivel de un árbol binario, devuelva el número de

nodos de ese nivel.

E

C

B F

A

D G

*

C

B

A

+

Page 24: guia_trabajos_pr__ctico_ayeded_utn.pdf

UNIVERSIDAD TECNOLÓGICA NACIONAL - FACULTAD REGIONAL C. DEL URUGUAY Algoritmos y Estructuras de Datos

Prof. AUS. Pascual Pontelli 23

TRABAJO PRÁCTICO Nº 17 GRAFOS.

1. Realizar un algoritmo que represente el siguiente grafo dirigido mediante una matriz de

adyacencia. Además se pide confeccionar: a. Un procedimiento que agregue un arco a la matriz de adyacencia. b. Un procedimiento que elimine un arco de la matriz. c. Una función que determine si un nodo posee ciclo. d. Una función que determine si dos nodos son adyacentes.

2. Se tiene la matriz de incidencia de un grafo de n nodos implementada en un arreglo bidimensional de n n elementos. La celda (i,j)=1, siendo 1<=j<=n y 1<=i<=n si hay un arco entre el elemento i y el elemento j; y 0 si no lo hay. Escribir el algoritmo necesario para cargar la matriz y determinar la cantidad de arcos que tiene el grafo.

3. Se tiene un grafo dirigido con información relativa al tiempo de vuelo para ciertas rutas entre ciudades. Se desea construir una tabla que brinde el menor tiempo requerido para viajar entre dos ciudades cualesquiera. Además se pide mostrar en que ciudad hizo escala el vuelo.

4. Dado el siguiente grafo hallar su matriz de adyacencia y la matriz de caminos de longitud dos. (Utilizar potencias de la matriz adyacente).

5. Realizar una función que determine si existe un camino de longitud 3 o menor entre los nodos i y j de una matriz adyacente dada. ((Adj[i,j] or Adj2[i,j] or Adj3[i,j])=V).

6. Dada una matriz de adyacencia A, hallar la matriz C, tal que C sea la clausura transitiva de A.

7. ¿Cómo se puede calcular de manera automática el grado de un nodo a partir de su matriz de adyacencia, y las aristas?.

1

2 5

4 3

1

3 4

2

Page 25: guia_trabajos_pr__ctico_ayeded_utn.pdf

UNIVERSIDAD TECNOLÓGICA NACIONAL - FACULTAD REGIONAL C. DEL URUGUAY Algoritmos y Estructuras de Datos

Prof. AUS. Pascual Pontelli 24

APENDICE I Ejemplos de Exámenes.

Listas, Pilas y Colas. 1- Se tiene una estructura con la información de los cinco años de la carrera de ISI a saber:

- Cuatrimestre - Cod_materia - Nombre - Docente titular - Docente auxiliar - Electiva (V,F) - Integradora (V,F) - Cant Horas semanales

Se pide: A- Confeccionar una lista de docentes del primer cuatrimestre, mostrando cantidad de inasistencias permitidas para regularizar (70%) y para promocionar (85%), sabiendo que dicho periodo es de 16 semanas. B- Permitir una opción para incorporar una materia electiva en 3ro., 4to. O 5to. Año. C- Calcular horas cátedras totales para el 1er. y 2do. Cuatrimestre (16 semanas). D- Mostrar % de horas que representan las materias electivas integradoras sobre el total. 2- Se tiene la siguiente información de los alumnos de 5to. Año:

- Nº legajo - Nombre - Dirección - DNI - Nacionalidad

Además por cada alumno se lleva registro de las materias que se tiene aprobada con la siguiente información:

- Código - Nombre materia - Año - Promociona (si/no) - Nota

Se pide: A- Permitir incorporar una materia aprobada que será dada de alta en la medida que se rinda y se apruebe la misma. B- Calcular el promedio de aquellos alumnos que tengan aprobadas (promocionadas o no) todas las materias de los años anteriores (calcular 7 materias por año). En dicho caso mostrar el promedio y los datos del alumno. C- Porcentaje de alumnos que hayan promocionados todas las materias. D- Formar una lista a partir dela información antes mencionada con los sig. datos:

- Nombre - Promedio - Cantidad materias aprobadas (todas las que hayan aprobado)

3- Se tiene una cola con los aspirantes a un puesto de trabajo a saber:

- Nombre - Dirección - Teléfono - Edad - Profesión

Se pide: A- Confeccionar una lista con los profesionales de informática de entre 25 y 45 años. B- Confeccionar una pila con los restantes.

Page 26: guia_trabajos_pr__ctico_ayeded_utn.pdf

UNIVERSIDAD TECNOLÓGICA NACIONAL - FACULTAD REGIONAL C. DEL URUGUAY Algoritmos y Estructuras de Datos

Prof. AUS. Pascual Pontelli 25

4- Una empresa posee una flota de camiones, por cada camión se tiene: - Código camión - Nombre - Nro. Patente - Cantidad de viajes realizados En la medida que se realiza un viaje se registra para cada nombre de chofer y se suma 1 a la

cantidad de viajes realizados. Cada viaje es:

- cod_provincia destino - importe

Se pide: A- Inserción de un camión (controlar si ya existe). B- Inserción de viajes. C- Calcular y mostrar el importe que percibirá cada chofer. D- Mostrar las provincias visitadas por los chóferes cuyo nombre comience con ‘DE”. E- ¿Cuál es el chofer que más viajes realizó?. (suponiendo que existe un solo máximo).

5- Una compañía aérea realiza las reservas de pasajes al destino X a lo largo de un mes, para lo cual se lleva registro por día de: fecha, hora, cantidad pasajeros (máx. 42). Cada vez que un pasajero reserva un lugar se debe incorporar a la lista de pasajeros de ese día, los siguientes datos: Nº asiento, nombre y DNI. Se pide: A- Brindar información sobre los días y horas en los que se pueda reservar un pasaje (tener en cuenta cantidad de pasajeros). B- Permitir incorporar una reserva en el día solicitado (contabilizar el Nº de pasajeros). C- Permitir cancelar una reserva y pasar la misma para otro día. D- Listado ordenado por Nº asiento de un día determinado. Determinar en que quincena hubo mayor demanda. 6- Se lleva registro en un aeropuerto de las reservas de pasajes para las distintas empresas (5) hacia los distintos destinos. Para ello se ingresa: empresa, destino, fecha, nombre, DNI, importe. Se pide: A- Listado ordenado por empresa, destino y fecha de las reservas (uno por cada empresa). B- Cantidad de pasajeros por empresa al pie de cada listado. C- Porcentaje de la empresa con mayor cantidad de pasajeros. D- Consulta de nombres de pasajeros de una empresa y destino dados, ingresando además las dos primeras letras del nombre. Arreglos. 1- - Se tiene una estructura con la información de los cinco años de la carrera de ISI a saber:

- Cuatrimestre - Cod_materia - Nombre - Docente titular - Docente auxiliar - Electiva (V,F) - Integradora (V,F) - Cant Horas semanales

A- Implementar en cada arreglo la información anterior. B- Mostrar por año las materias en orden alfabético. C- Determinar si IA es una materia de dicho plan en caso afirmativo mostrar toda la

información. 2- La secretaria de un centro médico necesita obtener información de cada uno de los 6 médicos que atienden en dicho lugar para ello leva un registro del día, por doctor, paciente, obra social (S/N) y plus, se pide:

Page 27: guia_trabajos_pr__ctico_ayeded_utn.pdf

UNIVERSIDAD TECNOLÓGICA NACIONAL - FACULTAD REGIONAL C. DEL URUGUAY Algoritmos y Estructuras de Datos

Prof. AUS. Pascual Pontelli 26

- Totales de pacientes atendidos por cada médico. - Total recibido en concepto de plus por cada médico. - Total recaudado en el día. - Porcentaje total de pacientes sin obra social. - Medico que más percibió en concepto de plus.

3- Realizar un algoritmo para una compañía de sepelios teniendo en cuenta los siguientes datos a volcar:

- socio Nº - apellidos y nombres - fecha de alta - motivo de baja (códigos del 1 al 10) - convenio colectivo (códigos del 100 al 200) - cuota mensual

Se pide: A- Un procedimiento que permita un listado ordenado por apellido y nombres para cada uno

de los convenios que muestre el resto de la información y el total de cuota a recaudar por cada convenio.

B- Un procedimiento para obtener toda la información sobre un determinado socio de existir este.

C- Un procedimiento que me permita obtener un listado de socios por convenios y el importe total a recaudar por cada uno de ellos.

D- Un listado con los socios dados de bajas.

4- Se tiene un edificio de departamentos de 11 pisos c/u de los cuales tiene 4 dptos. La información que se tiene es la siguiente:

- Piso - Dpto. - Propietario - Gastos

Se pide: A- Confeccionar un vector con aquellos Dptos. ocupados. B- Mostrar listado ordenado por propietario del Dpto. A. C- Listar ordenado por gastos aquellas personas cuyos gastos estén entre $ 100 y $ 200. D- Determinar cual es el piso con mayor total de gastos.

5- Una distribuidora presenta 15 vendedores de los cuales se tiene la siguiente información:

- Código de vendedor - Nombre - Zona - Importe vendido

Se pide: A- Listado ordenado por zona y nombre de vendedor. B- Dada una zona determinar monto total recaudado por sus vendedores y cantidad de vendedores que posee dicha zona. Además mostrar el vendedor que vendió mas y premiarlo con un 15 % de sus ventas. 6- Se tienen almacenadas las distintas materias de la carrera Ing. en sistemas por año (1ro., 2do., 3ro.). Por cada materia se lleva: cod_materia, nombre, área, cant. alumnos, promocionable (boolean), cant. horas semanales, año. Se pide: A- Definir la estructura adecuada para almacenar los datos anteriores. B- Dado un año mostrar todas las materias y la materia que más horas tiene. C- Mostrar la materia que más horas tiene de toda la carrera. D- Mostrar horas semanales a cursar por año.

Page 28: guia_trabajos_pr__ctico_ayeded_utn.pdf

UNIVERSIDAD TECNOLÓGICA NACIONAL - FACULTAD REGIONAL C. DEL URUGUAY Algoritmos y Estructuras de Datos

Prof. AUS. Pascual Pontelli 27

7- Se tiene cargada información reflejada a las ultimas compras. Los datos son:

- Nº artículo - Descripción - Cantidad comprada - Valor unitario Se pide: A- Listar ordenado por Nº artículo la cantidad comprada y su descripción. Determinar si dado un articulo se efectuó la reposición o no. Establecer el importe de la compra (cant. * $).

8- Dado un arreglo principal en donde figuran los siguientes datos:

- Nº artículo (está ordenado por Nº art. ) - Descripción - Stock (cantidad en existencia) - Precio de costo - Precio de venta

Se pide: A- Actualizar de acuerdo al arreglo del pto. 1 con el arreglo principal en un tercer arreglo. (mezcla) Nota: Actualizar: cantidad en existencia, precio de costo si es necesario, agregar un registro en el tercer arreglo si es que el Nº de articulo no existe en el principal, calculando el precio de venta con un 40% de ganancia.

9- Se tienen los sig. datos:

- Cod. Vendedor: (1 – 2 – 3) - Venta: $ - Provincia: (A, B, C) Se pide: A- Cargar datos B- Determinar total de ventas realizadas por cada vendedor C- Cual fue el vendedor que más vendió D- Porcentaje vendido en cada uno de las provincias E- ¿Cual fue la provincia mas visitada por el vendedor 2?. ¿Existe alguna que no haya visitado?

10- Se tiene una matriz que contiene las notas de 7 asignaturas correspondientes a los alumnos de primer año. Se pide:

A- Determinar la mejor nota para cada asignatura y a que alumno corresponde (en caso de haber mas de un alumno con la mejor nota mostrar cantidad de alumnos que la obtuvieron.

11- Un club realiza la cobranza de sus socios a través de cobradores. Los datos que figuran en registros son: DNI, apellido y nombre, domicilio, cuota, pago cuota, cobrador, zona.

A- Declare tipos y variables que necesita para este problema en Pascal. B- Realice un procedimiento listado (cobrador: byte); ordenado por zona y total por cobrador. C- Realice un procedimiento pago (DNI: longint) que permita imputar el pago de cuota a un

socio o el mensaje que corresponda. D- Realice el cuerpo del algoritmo con los puntos en cuestión y los procedimientos que

además requieran para su solución. Nota: Las estructuras de datos están cargadas y aplicar de ser necesario método de

ordenación y búsqueda binaria.

Page 29: guia_trabajos_pr__ctico_ayeded_utn.pdf

UNIVERSIDAD TECNOLÓGICA NACIONAL - FACULTAD REGIONAL C. DEL URUGUAY Algoritmos y Estructuras de Datos

Prof. AUS. Pascual Pontelli 28

APENDICE II Equivalencias entre Pseudocódigo y Lenguaje Pascal.

PSEUDOCÓDIGO LENGUAJE PASCAL

Algoritmo Identificador Program Identificador; ÁMBITO Type

Const Var

ASIGNACIÓN a b a:=b;

ESTRUCTURAS CONDICIONALES Si <Expresión Lógica> <sentencias> sino <sentencias>

If <Expresión Lógica> Then <Sentencias> ELSE

<Sentencias>;

Según <selector> <Valor 1> : <Sentencia 1> ; <Valor 2> : <Sentencia 2> ; ......................................... <Valor n> : <Sentencia n> ;

Case <Selector> of <Valor 1> : <Sentencia 1> ; <Valor 2> : <Sentencia 2> ; ......................................... <Valor n> : <Sentencia n> ; End;

ESTRUCTURAS CÍCLICAS Para Var: valor inicial..valor final <sentencias>

For <variable>:= <valor_inicial> to <valor_final> do <sentencias> ;

MIENTRAS <EXPRESIÓN LÓGICA> <sentencias>

While <Expresión Lógica> do <sentencias>;

REPETIR .................. Instrucciones ................... hasta <Expresión Lógica>

(i) Repeat <Sentencia 1> ; ....................... <Sentencia n> ; Until <Expresión Lógica>

OPERACIONES DE ENTRADA / SALIDA DE DATOS MOSTRAR Write o Writeln

Leer Readln o Read

Page 30: guia_trabajos_pr__ctico_ayeded_utn.pdf

UNIVERSIDAD TECNOLÓGICA NACIONAL - FACULTAD REGIONAL C. DEL URUGUAY Algoritmos y Estructuras de Datos

Prof. AUS. Pascual Pontelli 29

Tipos de Variables en Turbo Pascal. Existen diversos tipos de variables disponibles en Pascal entre las que se destacan:

Números Enteros Memoria Utilizada Tipo Rango de Valores

1 Byte Byte 0 a 255 2 Byte Integer -32.768 a 32.767 4 Byte Longint –2147483648 a 2147786647 1 Byte Shortint -128 a 127 2 Byte Word 0 a 65.535

Caracteres Memoria Utilizada Tipo Rango de Valores

1 Byte Char 0 a 255 Booleano o Lógico

Memoria Utilizada Tipo Rango de Valores 1 Byte Boolean True o False

Cadenas de Texto Memoria Utilizada Tipo Rango de Valores

1 Byte String 0 a 255 Números Reales

Memoria Utilizada Tipo Rango de Valores 6 Byte Real 2.910 x 10-39 a 1.710 x 1038 4 Byte Single 1.510 x 10-45 a 3.140 x 1030 8 Byte Double 5.010 x 10-24 a 1.710 x 10308

Page 31: guia_trabajos_pr__ctico_ayeded_utn.pdf

UNIVERSIDAD TECNOLÓGICA NACIONAL - FACULTAD REGIONAL C. DEL URUGUAY Algoritmos y Estructuras de Datos

Prof. AUS. Pascual Pontelli 30

a) Palabras Reservadas Las palabras reservadas en PASCAL son palabras que tienen un significado especial y no se pueden utilizar para otros propósitos. Una palabra reservada NO se puede utilizar como un identificador.

AND ARRAY BEGIN CASE CONST DIV DO DOWNTO ELSE END FILE FOR

FORWARD FUNCTION GOTO IF IN LABEL MOD NIL

NOT OF OR PACKED PROCEDURE PROGRAM RECORD REPEAT

SET THEN TO TYPE UNTIL VAR WHILE WITH

ABSOLUTE ASM DESTRUCTOR IMPLEMENTATION INTERFACE OBJECT

PRIVATE SHR UNIT VIRTUAL CONSTRUCTOR EXTERNAL INLINE INTERRUPT SHL STRING USES XOR

Estas palabras no pueden ser usadas como identificadores ya que cada una de ellas tiene una función definida en Turbo Pascal.