ALGORITMOS Y ESTRUCTURAS DE DATOS Guía de Ejercicios

ALGORITMOS Y ESTRUCTURAS DE DATOS Guía de Ejercicios 1) INTRODUCCIÓN A LA PROGRAMACIÓN PARA TODO LO QUE SIGUE DAMOS POR SABIDO QUE: * Los ejercicios de diagramación se hacen en lápiz, preferentemente en papel cuadriculado y de forma prolija (tenga una goma a mano). Es conveniente hacerlos a mano alzada. * Los diagramas se identificarán con el número de ejercicio en el formato ´u.t.nn´ (u: unidad, t: tema, nn: número en dos dígitos. Por ejemplo 1.A.01 es el ejercicio siguiente (unidad 1, tema A, ejercicio 01. Otro ejemplo: 4.C.12 es el ejercicio 12 del tema C de la unidad 4. * Los ejercicios deben estar estrictamente en orden en la carpeta. Haga un ejercicio por carilla y así podrá insertar con facilidad posteriormente los ejercicios faltantes. * Los nombres de las variables deben ser significativos. 1.A) DIAGRAMACIÓN SECUENCIAL BÁSICA 1.A.01) Hacer el diagrama de un proceso que permita ingresar un número, que calcule la cuarta parte del mismo y que muestre ese resultado. Hacer pruebas de escritorio para verificar. 1.A.02) Hacer el diagrama de un proceso que permita ingresar una cantidad de horas y que muestre la cantidad de minutos y la cantidad de segundos equivalentes a dicha cantidad de horas. Hacer pruebas de escritorio para verificar. 1.A.03) Hacer el diagrama de un proceso que permita ingresar las tres notas que obtuvo un alumno y mostrar el promedio de ellas. Hacer pruebas de escritorio para verificar. 1.A.04) Hacer el diagrama de un proceso que permita ingresar la cantidad de personas ausentes en un día sobre un total de 70 y que muestre el porcentaje de ausentes de ese día. Hacer pruebas de escritorio para verificar. 1.A.05) Un odontólogo sabe que de sus ingresos totales debe pagar 5% de impuestos nacionales, el 2% al colegio profesional y un 0,3% al municipio. Hacer el diagrama de un proceso que permita mostrar cuánto es cada parcial y cuánto es el total a pagar. Hacer pruebas de escritorio para verificar. 1.A.06) Agregar al diagrama anterior la posibilidad de indicar el valor de sus gastos fijos y mostrar la ganancia que obtiene. Hacer pruebas de escritorio para verificar. 1.A.07) Hacer un diagrama de un proceso que permita ingresar la cantidad de horas trabajadas y el valor que se paga por hora. Se descuentan 11% de jubilación, 3% para la obra social y 2% de cuota sindical. Informar todos los parciales y el sueldo a cobrar. Hacer pruebas de escritorio para verificar. 1.A.08) Hacer el diagrama de un proceso que permita ingresar el valor de venta de una casa y el valor de sellado para formularios. Por la venta se debe pagar un 21% de impuestos y un 5% a la inmobiliaria. Todos los gastos se dividen a medias entre el comprador y el vendedor. Informar: impuesto a pagar, cuánto cobra la inmobiliaria, cuánto cobra el vendedor y cuanto paga el comprador. Hacer pruebas de escritorio para verificar. Algoritmos y est. de datos – Guía de ejercicios – Prof. Daniel Luszczyk – F.R. 04/07/14 - Página 1/22 1.B) CODIFICACION ELEMENTAL PARA TODO LO QUE SIGUE DAMOS POR SABIDO QUE: * Los ejercicios que se codifiquen se deben guardar en un medio permanente y personal, por ejemplo un pendrive. Este elemento se debe traer todas las clases para poder trabajar adecuadamente. Si bien es permitido (y conveniente) hacer algunos ejercicios grupalmente, cada alumno debe tener su propia copia. * Los programas codificados se guardan dentro de una carpeta en el pendrive llamada ALGORITMOS. * El nombre de cada archivo tiene el formato ´utnn´ que representa el número de ejercicio (u: unidad, t: tema, nn: número en dos dígitos. Por ejemplo 1B01 es el ejercicio siguiente (unidad 1, tema B, ejercicio 01. Otro ejemplo 5D03 es el ejercicio 03 del tema D de la unidad 5. * En todos los programas que se codifiquen use comentarios en el código (al menos materia, número de ejercicio, a quién pertenece, etc.). Por ejemplo: /* ALGORITMOS - Ejercicio 3C02 Pérez, José – García, Juan 4to 1ra Computación */ 1.B.01) Escribir la codificación de un programa que imprima los nombres de las estaciones del año una a continuación de la otra, con un espacio separatorio entre ellas. Probar el programa. 1.B.02) Repetir el anterior usando el separador de tabulación. 1.B.03) Repetir el anterior para que se impriman en renglones consecutivos. 1.B.04) Repetir el anterior para que se impriman en renglones consecutivos dejando un renglón en blanco entre ellas. 1.C) CODIFICACION SECUENCIAL BÁSICA 1.C.01) Hacer la codificación mínima para el ejercicio 1.A.01. Probar en la computadora para todos los casos posibles. 1.C.02) Hacer la codificación mínima para el ejercicio 1.A.02. Probar en la computadora para todos los casos posibles. 1.C.03) Hacer la codificación mínima para el ejercicio 1.A.03. Probar en la computadora para todos los casos posibles. 1.C.04) Hacer la codificación mínima para el ejercicio 1.A.04. Probar en la computadora para todos los casos posibles. 1.C.05) Hacer la codificación mínima para el ejercicio 1.A.05. Probar en la computadora para todos los casos posibles. 1.C.06) Hacer la codificación mínima para el ejercicio 1.A.06. Probar en la computadora para todos los casos posibles. 1.C.07) Hacer la codificación mínima para el ejercicio 1.A.07. Probar en la computadora para todos los casos posibles. Algoritmos y est. de datos – Guía de ejercicios – Prof. Daniel Luszczyk – F.R. 04/07/14 - Página 2/22 1.C.08) Hacer la codificación mínima para el ejercicio 1.A.08. Probar en la computadora para todos los casos posibles. 1.C.09) Rehacer el ejercicio 1.C.05 usando títulos, leyendas aclaratorias y renglones de espaciamiento. Probar el programa. 1.D) POSICIONAMIENTO, COLOR Y FORMATO 1.D.01) Escribir la codificación de un programa que permita imprimir la palabra HOLA en el centro de la pantalla. Probar el programa. 1.D.02) Modificar el anterior para que además la palabra quede en letras rojas sobre fondo amarillo. Probar el programa. 1.D.03) Escribir la codificación de un programa que permita que aparezca 10 veces la palabra HOLA formando una diagonal con las palabras. Probar el programa. 1.D.04) Escribir la codificación de un programa que permita que aparezca la palabra HOLA en el centro de la pantalla pero en forma vertical. Probar el programa. 1.D.05) Escribir la codificación de un programa que permita que la palabra HOLA aparezca en diagonal. Probar el programa. 1.D.06) Escribir la codificación de un programa que imprima los nombres de los primeros 8 colores (0 al 7) con el color al que hacen referencia. Probar el programa. 1.D.07) Escribir la codificación de un programa que permita ingresar un valor, calcular el 13,2% de dicho valor y mostrar en pantalla la suma de ambos (a tres decimales) de la manera habitual como se hacen sumas en un papel. Probar el programa. 1.E) INTERFAZ DE USUARIO 1.E.01) Rehacer el ejercicio 1.C.05 agregando posicionamiento, colores y formateo. Probar el programa. 1.E.02) Codificar en forma presentable para el usuario (con todos los recursos vistos) el ejercicio 1.C.07. Probar el programa. 2) ESTRUCTURAS DE CONTROL 2.A) BIFURCACIÓN CONDICIONAL PARA TODO LO QUE SIGUE DAMOS POR SABIDO QUE: * En todos los programas que se codifiquen debe usarse indentado en las estructuras. * No se olvide de agregar comentarios que faciliten el entendimiento del código. * La prueba de un programa consiste en probar todos los casos posibles. 2.A.01) Hacer el diagrama de un proceso que pida ingresar un número mayor que 17. Si el usuario ingresa mal el numero mostrar un mensaje que le indique sobre su error. Si lo ingresa bien no hacer nada. Luego codificar y probar el programa. Algoritmos y est. de datos – Guía de ejercicios – Prof. Daniel Luszczyk – F.R. 04/07/14 - Página 3/22 2.A.02) Rehacer el anterior cambiando la forma de la condición de bifurcación. Luego codificar y probar el programa. 2.A.03) Escribir la codificación de un programa que pida que se ingrese un numero e imprimir el doble del mismo; si el numero es positivo en rojo y si es negativo en verde. Probar el programa. 2.A.04) Hacer el diagrama de un proceso que permita ingresar un numero. Si el numero es mayor que 5 informar el doble del numero; si es menor que 5 informar el triple; y si es 5 mostrar un mensaje que diga “Numero 5”. Luego codificar y probar el programa. 2.A.05) Hacer el diagrama de un proceso que permita ingresar la edad de una persona y que indique a la categoría que pertenece. Arbitrariamente las categorías son: JOVEN, menores de 20 años; ADULTO, desde 20 hasta 39 años; MAYOR, desde 40 hasta 60 años; TERCERA EDAD, los mayores de 60. Luego codificar y probar el programa. 2.A.06) Hacer el diagrama de un proceso que pida los ingresos anuales de un comercio y calcular y mostrar los impuestos a pagar. Si los ingresos no superan los $200.000 se debe pagar 3%. En caso contrario debe pagarse además un 0,2% de lo que exceda de $200.000. Luego codificar y probar el programa. 2.A.07) Hacer el diagrama de un proceso que permita ingresar el código de categoría (solamente 1 o 2) y la cantidad de días que estuvo ausente un empleado. La categoría 1 tiene un sueldo de $500 y se descuentan $20 por día ausente. La categoría 2 tiene un sueldo de $1.000 y se le descuentan 35$ por día ausente. Imprimir cuanto se debe cobrar teniendo en cuenta que el empleado no puede quedar debiendo, informando en ese caso que esta despedido. Se debe verificar si se ingresó una categoría válida y, en caso de no serlo, informar de la situación. Luego codificar y probar el programa. 2.A.08) Hacer el diagrama de un proceso que permita ingresar tres números e informe cuál de ellos es el mayor. Luego codificar y probar el programa. 2.A.09) Hacer el diagrama de un proceso que permita ingresar un número entre 12 y 32. Informar luego si el ingreso fue correcto o incorrecto. Luego codificar y probar el programa. 2.A.10) Hacer el diagrama de un proceso que permita ingresar un número que no esté entre 12 y 32. Informar luego si el ingreso fue correcto o incorrecto. Luego codificar y probar el programa. 2.A.11) Se desea ubicar a personas que tengan un número de DNI que sea mayor que 20 millones pero menor que 30 millones. Hacer el diagrama de un proceso que permita ingresar el número de DNI y que informe si la persona está en el rango buscado o no. Luego codificar y probar el programa. 2.A.12) Se desea ubicar a personas que tengan un sueldo que sea menor a 2 mil pesos o que su sueldo sea mayor a $6.000. Hacer el diagrama de un proceso que permita ingresar el sueldo y que informe si la persona está en el rango buscado o no. Luego codificar y probar el programa. 2.A.13) Se desea encontrar artículos, mediante su número de código, de modo tal que dicho código esté entre 500 y 700 o, también, cuyos códigos sean menores a 100. Hacer el diagrama de un proceso que permita ingresar el código y que informe si está entre los buscados o no. Luego codificar y probar el programa. 2.A.14) Codificar el ejercicio 2.A.07 con una interfaz de usuario presentable (color, posición, formateo, etc.). Probar el programa. 2.B) LAZOS BASADOS EN CONTADORES AUTOMÁTICOS Algoritmos y est. de datos – Guía de ejercicios – Prof. Daniel Luszczyk – F.R. 04/07/14 - Página 4/22 2.B.01) Hacer el diagrama de un proceso que imprima 15 veces la palabra “Hola”. Luego codificar y probar el programa. 2.B.02) Hacer el diagrama de un proceso que permita imprimir la tabla del 7. Luego codificar y probar el programa. 2.B.03) Rehacer el anterior usando una variante. Luego codificar y probar el programa. 2.B.04) Hacer el diagrama de un proceso que permita imprimir la tabla del numero que ingrese el usuario. Luego codificar y probar el programa. 2.B.05) Codificar y probar en la computadora un programa que imprima la repetidamente la palabra “Hola” con los colores de 0 a 15. 2.B.06) Hacer un programa que llene de asteriscos amarillos la línea 10, imprimiendo de a uno por vez. Probar el programa. 2.B.07) Hacer un programa que imprima una “línea de asteriscos verdes” en la fila 5, desde la columna 40 hasta la 23. Probar el programa. 2.B.08) Hacer un programa que imprima una “línea de asteriscos azules” en la columna 20, desde la fila 6 hasta la 20. Probar el programa. 2.B.09) Repetir el anterior dejando un espacio entre asteriscos. 2.B.10) Hacer un programa que imprima un rectángulo centrado con asteriscos rojos. El ancho debe ser de 30 posiciones y el alto de 15. Probar el programa. 2.B.11) Hacer un programa que imprima un asterisco en la diagonal principal. Tómese como diagonal principal las coordenadas (1,1), (2,2), (3,3), ...., (23,23), .... . Probar el programa. 2.B.12) Hacer un programa que imprima un asterisco en la diagonal inversa. Tómese por ejemplo como diagonal inversa las coordenadas (80,80), (79,79), (78,78), .... . Probar el programa. 2.B.13) Hacer el diagrama de un proceso que permita ingresar el costo y el porcentaje de ganancias para 50 artículos. En cada oportunidad debe mostrarse el precio final, que se obtiene agregando al costo la ganancia y agregando a lo anterior un 21% de impuestos. Luego codificar y probar el programa. 2.B.14) Se desea ubicar a personas que tengan una edad que sea menor a 20 años o que su DNI sea mayor a 30 millones. Hacer el diagrama de un proceso que permita ingresar la edad y el DNI y que informe si la persona está en el rango buscado o no, para un total de 40 personas. Luego codificar y probar el programa. 2.B.15) Hacer un programa que haga titilar un asterisco 50 veces. Observación 1: si se imprime en una coordenada un asterisco, luego en la misma posición un espacio en blanco y se repite el proceso, se logra el efecto pedido. Observación 2: para que lo anterior funcione es necesario generar un retardo entre impresiones; una forma de lograrlo es usar un contador que no haga nada más que contar. Por aproximaciones sucesivas puede graduarse la cantidad de conteos a realizar para obtener el efecto deseado. 2.B.16) Hacer un programa haga que un asterisco se mueva de izquierda a derecha en la pantalla, sobre la fila 10. 2.B.17) Hacer un programa haga que un asterisco se mueva de derecha a izquierda en la pantalla, sobre la fila 10. 2.B.18) Combinar los dos últimos para que el asterisco “vaya y vuelva”. Algoritmos y est. de datos – Guía de ejercicios – Prof. Daniel Luszczyk – F.R. 04/07/14 - Página 5/22 2.B.19) Modificar el anterior para que el proceso se repita 40 veces. 2.B.20) Modificar el anterior para que, en lugar del asterisco, lo que se desplace sea su nombre. 2.C) CONTADORES PARA TODO LO QUE SIGUE DAMOS POR SABIDO QUE: * Es necesario dar un valor inicial a los contadores y otras variables que lo requieran. * Cuando haga pruebas debe conocer los resultados correctos de antemano y verificar que el programa efectivamente da esos resultados correctos. Esto sirve para deducir los errores que pudieran haber en la lógica o la codificación y corregirlos. * No olvide indentar las estructuras, agregar comentarios y probar todos los casos posibles. 2.C.01) Hacer el diagrama de un proceso que permita ingresar 10 números y que informe cuantos de ellos fueron mayores que 4. Codificar y probar. 2.C.02) Hacer el diagrama de un proceso que permita ingresar 20 números y que informe el porcentaje de ellos que fueron menores a 15. Codificar y probar. 2.C.03) Se deben ingresar los sueldos de 100 personas y se desea saber: a) ¿Cuántos ganan menos de $500? b) ¿Cuántos ganan entre $500 y $1.000? c) ¿Cuántos ganan mas de $1.000? Hacer el diagrama de un proceso que permita realizarlo. Codificar y probar. 2.C.04) Se ingresan los sueldos y edades de 80 personas. Se desea saber: a) ¿Cuántos son menores de 20 años? b) ¿Qué porcentaje corresponde a los mayores de 50 años? c) ¿Cuántos ganan entre $1.000 y $500? d) ¿Cuántas personas tienen más de 40 años y ganan menos de $600? Hacer el diagrama de un proceso que permita realizarlo. Codificar y probar. 2.C.05) Se deben ingresar la cantidad de ausencias en el mes y la cantidad de horas extras realizadas por 70 personas. Se desea saber: a) ¿Cuántos no faltaron? b) Porcentaje de los que hicieron 10 horas extras o menos. c) Porcentaje de los que hicieron 5 o más horas extras y faltaron menos de 3 días. d) ¿Cuántos faltaron más de 3 veces o hicieron menos de 10 horas extras? Hacer el diagrama de un proceso que permita realizarlo. 2.C.06) Agregar al anterior la codificación necesaria para una interfaz de usuario adecuada (mensajes, separadores, color, posicionamiento, formateo, comentarios suficientes, etc.) 2.C.07) Hacer el diagrama de un proceso que permita desplazarse a un asterisco por la pantalla siguiendo la diagonal principal y haciendo que “rebote en los bordes”. El proceso puede repetirse la cantidad de veces que considere apropiado (por ejemplo 10000). Codificar y probar. 2.C.08) Modificar el ejercicio anterior de modo que en cada “ida y vuelta” el asterisco cambie de color. 2.D) ACUMULADORES 2.D.01) Hacer el diagrama de un proceso que permita ingresar 100 sueldos e informar el total a pagar. Codificar y probar. Algoritmos y est. de datos – Guía de ejercicios – Prof. Daniel Luszczyk – F.R. 04/07/14 - Página 6/22 2.D.02) Hacer el diagrama de un proceso que permita ingresar 40 edades e informar su promedio. Codificar y probar. 2.D.03) Se deben ingresar los sueldos y edades de 500 personas. Se desea saber: a) ¿Cuántos ganan entre $600 y $900? b) El porcentaje de los que ganan menos de $500. c) El total de sueldos a pagar. d) El promedio de edades. e) ¿Cuántos ganan más de $1.000 o tienen más de 50 años? Hacer el diagrama de un proceso que permita realizarlo. Codificar y probar. 2.D.04) Se deben ingresar el precio unitario y la cantidad vendida de 50 productos. Se desea saber el importe total recaudado. Hacer el diagrama de un proceso que permita realizarlo. Codificar y probar. 2.D.05) Se deben ingresar el año de fabricación y el precio de 200 autos de una concesionaria de autos usados. Se desea saber: a) El valor total de todos los autos. b) El valor total de los autos de 2005 o más nuevos. c) El promedio de precios de los autos de 1998. Considerar que no es posible dividir por cero por lo cual se deberá hacer una comprobación apropiada cuando corresponda (en los ejercicios siguientes no se volverá a recordar esto, pero se asume que debe hacerlo). Hacer el diagrama de un proceso que permita realizarlo. Codificar y probar. 2.D.06) Se deben ingresar el código postal, la cantidad de habitantes y el subsidio asignado de 200 localidades. Se desea saber: a) El total de subsidios asignados a las localidades cuyo código postal sea menor a 3000. b) El promedio de habitantes de las localidades que recibieron un subsidio de más de $10.000. c) El total de subsidios para las localidades que tienen más de 5.000 habitantes y su código sea mayor a 5.000. d) El promedio de habitantes de las localidades cuyo código esté entre 2.000 y 4.000, o de las que reciben un subsidio menor de $5.000. e) Globalmente, el subsidio por habitante. Hacer comprobaciones de las posibilidades de división por cero. Hacer el diagrama de un proceso que permita realizarlo. Codificar y probar. 2.D.07) Se deben ingresar el precio unitario, la cantidad vendida y el código de 500 artículos vendidos. Se desea saber: a) El dinero recaudado por las ventas de los artículos cuyo código esté entre 10 y 50. b) El porcentaje de las ventas cuyo total superan los $150 o están debajo de $50. c) El promedio de cantidades vendidas de los artículos cuyo precio sea mayor que $30. Hacer el diagrama de un proceso que permita realizarlo y luego codificar y probar en la computadora. 2.D.08) Agregar al anterior la codificación necesaria para una interfaz de usuario adecuada (mensajes, separadores, color, posicionamiento, formateo, comentarios suficientes, etc.) 2.E) LAZOS BASADOS EN CONDICIONES PARA TODO LO QUE SIGUE DAMOS POR SABIDO QUE: * Cuando haga una división por una variable que pueda llegar a valer cero, debe comprobar esa posibilidad y dar las respuestas adecuadas en todos los casos. * Cuando haga pruebas debe conocer los resultados correctos de antemano y verificar que el programa efectivamente da esos resultados correctos. Algoritmos y est. de datos – Guía de ejercicios – Prof. Daniel Luszczyk – F.R. 04/07/14 - Página 7/22 * No olvide indentar las estructuras, agregar comentarios y probar todos los casos posibles. 2.E.01) Hacer el diagrama de un proceso que permita ingresar un numero mayor que 10. Si es así, imprimir el doble del numero. En caso contrario avisar al usuario y repetir el ingreso hasta que se cumpla lo solicitado. Codificar y probar. 2.E.02) Se debe ingresar una cantidad indefinida de sueldos y calcular su promedio. Cuando se ingresa sueldo igual a cero no se trata de un sueldo sino que es una convención para indicar que no hay mas datos por ingresar. Hacer el diagrama de un proceso que permita realizarlo. Codificar y probar. 2.E.03) Hacer el diagrama de un proceso que permita ingresar números indefinidamente hasta que se ingrese cero. Por cada numero ingresado indicar si es positivo o negativo. Codificar y probar en la computadora. 2.E.04) Hacer el diagrama de un proceso que permita ver cualquiera de las tablas de multiplicar del 1 al 10, a medida que el usuario las vaya pidiendo. Si el usuario solicita la tabla del cero, esto indica que desea salir del proceso. Si se pide una tabla de otros números se debe informar del error y continuar el proceso. Codificar y probar en la computadora. 2.E.05) Se debe ingresar la cuota social (valor pagado en pesos) y el numero de socio de las personas que concurren a un club. Número de socio igual a cero significa fin de ingreso de datos. Se pide: a) Porcentaje de socios con numero mayor a 500. b) Cantidad de socios que pagan menos de $10 o cuyo numero sea menor a 300. c) Promedio de cuotas sociales. d) Porcentaje de socios cuya cuota social este entre $15 y $20. e) Monto recaudado por lo aportado por los socios cuyo número sea menor a 50. Hacer el diagrama de un proceso que permita realizarlo y luego codificar y probar en la computadora. 2.E.06) Se deben ingresar código, precio y existencia de una cantidad indefinida de artículos (código cero significa fin de ingreso). Se pide: a) Valor del total de los artículos. b) Porcentaje de artículos cuyo código sea inferior a 200 o que su precio este entre 5$ y 10$. c) Promedio de precios de los artículos cuya existencia sea mayor que 50. Hacer el diagrama de un proceso que permita realizarlo y luego codificar y probar en la computadora. 2.E.07) Agregar al anterior la codificación necesaria para una interfaz de usuario adecuada (mensajes, separadores, color, posicionamiento, formateo, comentarios suficientes, etc.) 2.F) DISTRIBUIDORES 2.F.01) Hacer el diagrama de un proceso que permita ingresar dos números y a continuación muestre un menú con opciones numéricas para las cuatro operaciones básicas (1: suma, 2: resta, 3: multiplicación y 4: división). El programa deberá realizar la operación solicitada entre los números que se ingresaron o nada si se ingresa una opción inválida. Codificar y probar. 2.F.02) Modificar el anterior para que, si se ingresa una opción no válida, se informe de ello y se solicite nuevamente la opción. Codificar y probar. 2.F.03) Modificar los anteriores para que el proceso se haga una cantidad indefinida de veces. Se deberá agregar una opción para salir. Codificar y probar. 2.F.04) Agregar al anterior la codificación necesaria para una interfaz de usuario adecuada (mensajes, separadores, color, posicionamiento, formateo, comentarios suficientes, etc.) Algoritmos y est. de datos – Guía de ejercicios – Prof. Daniel Luszczyk – F.R. 04/07/14 - Página 8/22 2.G) MÁXIMOS Y MÍNIMOS SIN REPETICIÓN 2.G.01) Hacer el diagrama de un proceso que permita ingresar 20 valores y que informe el mayor de ellos (puede haber negativos). Codificar y probar. 2.G.02) Repetir el anterior por un método alternativo. 2.G.03) Hacer el diagrama de un proceso que permita ingresar 25 edades e informe la menor de ellas. Codificar y probar. 2.G.04) Hacer el diagrama de un proceso que permita ingresar los sueldos y edades de 10 personas e informar la mayor edad y el menor sueldo. Codificar y probar. 2.G.05) Hacer el diagrama de un proceso que permita ingresar los DNI y sueldos de 60 personas e informar el DNI del que tiene el mayor sueldo (es uno solo). Codificar y probar. 2.G.06) Hacer el diagrama de un proceso que permita ingresar los DNI y edades de 20 personas. Se desea conocer el DNI de quien tiene la menor edad (es uno solo) y cuál es esa edad. Informar también el promedio de edades. Codificar y probar. 2.G.07) Hacer el diagrama de un proceso que permita ingresar los consumos de electricidad de los treinta días de un mes, en forma ordenada. Se desea saber en que día se consumió la menor cantidad (es una sola) y cuánto fue. Codificar y probar. 2.G.08) Hacer el diagrama de un proceso que permita ingresar en forma desordenada el número de día de un mes de 31 días y la cantidad de personas ausentes. Informar la mayor cantidad de ausencias y en cuantos días se produjo, teniendo en cuenta que puede repetirse esa cantidad. Informar además el porcentaje de días en que se produjeron mas de 5 ausencias. Codificar y probar. 2.G.09) Se ingresan en forma ordenada las ventas de 15 sucursales. Se desea saber: a) El promedio de ventas. b) El porcentaje de sucursales que vendieron entre $1.000 y $2.000. c) El numero de sucursal que realizo la menor venta (es una sola) y de cuánto fue. d) El número de sucursal que realizó la mayor venta (es una sola) y de cuánto fue. Hacer el diagrama de un proceso que permita realizarlo. Codificar y probar. 2.G.10) Se ingresan los códigos, precios y existencias de una cantidad indefinida de artículos (código cero indica fin del ingreso). Se desea saber: a) El valor total de los artículos. b) Porcentaje de artículos cuya existencia sea mayor que 10 o su precio sea inferior a $5. c) El código del artículo del que se tiene menor existencia (es uno solo) y cuál es. d) El código del artículo del que se tiene mayor capital (es uno solo) y de cuánto es. Hacer el diagrama de un proceso que permita realizarlo. Codificar y probar. 2.G.11) Agregar al anterior la codificación necesaria para una interfaz de usuario adecuada (mensajes, separadores, color, posicionamiento, formateo, comentarios suficientes, etc.) 3) VARIABLES Y EXPRESIONES 3.A) VARIABLES NUMÉRICAS Algoritmos y est. de datos – Guía de ejercicios – Prof. Daniel Luszczyk – F.R. 04/07/14 - Página 9/22 3.A.01) Codificar un programa que declare dos variables enteras cortas (short) y asignarles un valor dentro de su rango y uno fuera respectivamente. Luego imprimirlas. ¿Qué ocurre? ¿Por qué? 3.A.02) Repetir el anterior para los tipos entero corto sin signo (unsigned short), entero (int), entero sin signo (unsigned int), entero largo (long), entero largo sin signo (unsigned long). 3.A.03) Codificar un programa que declare dos variables, una entera corta (llamada c) y otra entera (llamada e) y asignarles valores grandes dentro de su rango a cada una. Luego hacer la asignación e=c e imprimir el valor de e. ¿Qué ocurre? ¿Por qué? 3.A.04) Codificar un programa que declare dos variables, una entera corta (c) y otra entera (e) y asignarles valores grandes dentro de su rango a cada una. Luego hacer c=e e imprimir el valor de c. ¿Qué ocurre? ¿Por qué? 3.A.05) Codificar un programa que declare una variable de coma flotante (float) y asignarle el resultado de dividir 10 en 3. Imprimir la variable de modo de mostrar 20 decimales. ¿Cuántos decimales correctos obtiene? 3.A.06) Repetir el anterior para una variable de coma flotante doble (double). 3.A.07) Codificar un programa que declare una variable de coma flotante doble (d), otra de coma flotante (f) y otra entera (e). Asignarles los valores 2,000000001 , 2,0001 y 2, respectivamente. Hacer la suma de las tres tomando como destino d (d=d+f+e) e imprimir. Repetir con destino f y e. Probar el programa en los tres casos. ¿Qué ocurre al mezclar tipos de variables numéricas en operaciones? 3.B) EXPRESIONES ALGEBRAICAS Y FUNCIONES DE BIBLIOTECA 3.B.01) Codificar un programa que permita ingresar el radio de un círculo y que calcule su perímetro, su superficie y el volumen de la esfera de ese radio. Usar constantes y un valor de de 3,14159. Probar en la computadora . π 3.B.02) Hacer el diagrama de un proceso que permita ingresar un número y que muestre la raíz cuadrada real del mismo o que se informe si no es posible. Codificar y probar en la computadora. 3.B.03) Rehacer el anterior para que se muestre el resultado real o imaginario según corresponda. 3.B.04) Hacer el diagrama de un proceso que permita mostrar una tabla de valores de la función 2x3 _______ y = ———— - √ x2 - 1 2-x , para valores de x entre -5 y 5 con paso de 0,5. Mostrar los resultados del modo que se suele usar en Matemática. No olvidar que ciertas operaciones tienen restricciones. Codificar y probar en la computadora. 3.B.05) Hacer el diagrama de un proceso que permita ingresar un número y que indique si es par o impar usando el operador resto. Codificar y probar en la computadora. 3.B.06) Rehacer el anterior usando la función parte entera. 3.B.07) Hacer el diagrama de un proceso que permita ingresar un número y que indique si es múltiplo de siete. Codificar y probar en la computadora. 3.B.08) Rehacer el anterior agregando que se haga un reingreso si el número ingresado no es entero. Algoritmos y est. de datos – Guía de ejercicios – Prof. Daniel Luszczyk – F.R. 04/07/14 - Página 10/22 3.B.09) Hacer el diagrama de un proceso que permita ingresar un numero con muchos decimales (6 por ejemplo) y que lo muestre redondeado a 2 decimales (usar un algoritmo, no usar formateo de números). Codificar y probar en la computadora. 3.B.10) Repetir el anterior redondeando a cuatro decimales. 3.B.11) Repetir el anterior redondeando al entero. 3.B.12) Repetir el anterior redondeando a las decenas. 3.B.13) Hacer el diagrama de un proceso que permita ingresar el cateto opuesto y el ángulo que forma con la hipotenusa en un triángulo rectángulo e informe el valor del cateto adyacente, la hipotenusa y el ángulo adyacente. Codificar y probar en la computadora. 3.B.14) Hacer el diagrama de un proceso que permita ingresar el valor nominal de una resistencia y la tolerancia de fabricación. Luego debe permitir ingresar los valores medidos de 500 de esas resistencias. Para cada una de ellas informar si están o no dentro de la tolerancia declarada (usar la función valor absoluto). Dar además el porcentaje de resistencias dentro de tolerancia. Codificar y probar en la computadora. 3.C) VARIABLES DE CARACTERES 3.C.01) Probar los siguientes códigos: a) ¿Por qué la palabra necesita 6 caracteres si tiene 5 letras? ¿Por qué no se muestran 20 caracteres en el tercer nombre? char n1[5]="Carla", n2[6]="Carla", n3[20]="Carla"; printf("%s\n%s\n%s\n",n1,n2,n3); b) ¿Por qué para la misma variable se imprime la palabra, una letra y un número? char n[6]="Carla"; printf("%s\n",n); printf("%c\n",n[0]); printf("%i\n",n[0]); c) ¿Por qué los resultados no son 6 y 20? char n1[6]="Carla", n2[20]="Carla"; int l1,l2; l1=strlen(n1); l2=strlen(n2); printf("%i\n%i\n",l1,l2); d) El siguiente código es incorrecto. ¿Cómo debe ser el código para que la variable se ca

4 downloads 126 Views 164KB Size

Story Transcript

ALGORITMOS Y ESTRUCTURAS DE DATOS Guía de Ejercicios

1) INTRODUCCIÓN A LA PROGRAMACIÓN PARA TODO LO QUE SIGUE DAMOS POR SABIDO QUE: * Los ejercicios de diagramación se hacen en lápiz, preferentemente en papel cuadriculado y de forma prolija (tenga una goma a mano). Es conveniente hacerlos a mano alzada. * Los diagramas se identificarán con el número de ejercicio en el formato ´u.t.nn´ (u: unidad, t: tema, nn: número en dos dígitos. Por ejemplo 1.A.01 es el ejercicio siguiente (unidad 1, tema A, ejercicio 01. Otro ejemplo: 4.C.12 es el ejercicio 12 del tema C de la unidad 4. * Los ejercicios deben estar estrictamente en orden en la carpeta. Haga un ejercicio por carilla y así podrá insertar con facilidad posteriormente los ejercicios faltantes. * Los nombres de las variables deben ser significativos.

1.A) DIAGRAMACIÓN SECUENCIAL BÁSICA 1.A.01) Hacer el diagrama de un proceso que permita ingresar un número, que calcule la cuarta parte del mismo y que muestre ese resultado. Hacer pruebas de escritorio para verificar. 1.A.02) Hacer el diagrama de un proceso que permita ingresar una cantidad de horas y que muestre la cantidad de minutos y la cantidad de segundos equivalentes a dicha cantidad de horas. Hacer pruebas de escritorio para verificar. 1.A.03) Hacer el diagrama de un proceso que permita ingresar las tres notas que obtuvo un alumno y mostrar el promedio de ellas. Hacer pruebas de escritorio para verificar. 1.A.04) Hacer el diagrama de un proceso que permita ingresar la cantidad de personas ausentes en un día sobre un total de 70 y que muestre el porcentaje de ausentes de ese día. Hacer pruebas de escritorio para verificar. 1.A.05) Un odontólogo sabe que de sus ingresos totales debe pagar 5% de impuestos nacionales, el 2% al colegio profesional y un 0,3% al municipio. Hacer el diagrama de un proceso que permita mostrar cuánto es cada parcial y cuánto es el total a pagar. Hacer pruebas de escritorio para verificar. 1.A.06) Agregar al diagrama anterior la posibilidad de indicar el valor de sus gastos fijos y mostrar la ganancia que obtiene. Hacer pruebas de escritorio para verificar. 1.A.07) Hacer un diagrama de un proceso que permita ingresar la cantidad de horas trabajadas y el valor que se paga por hora. Se descuentan 11% de jubilación, 3% para la obra social y 2% de cuota sindical. Informar todos los parciales y el sueldo a cobrar. Hacer pruebas de escritorio para verificar. 1.A.08) Hacer el diagrama de un proceso que permita ingresar el valor de venta de una casa y el valor de sellado para formularios. Por la venta se debe pagar un 21% de impuestos y un 5% a la inmobiliaria. Todos los gastos se dividen a medias entre el comprador y el vendedor. Informar: impuesto a pagar, cuánto cobra la inmobiliaria, cuánto cobra el vendedor y cuanto paga el comprador. Hacer pruebas de escritorio para verificar.

Algoritmos y est. de datos – Guía de ejercicios – Prof. Daniel Luszczyk – F.R. 04/07/14 - Página 1/22

1.B) CODIFICACION ELEMENTAL PARA TODO LO QUE SIGUE DAMOS POR SABIDO QUE: * Los ejercicios que se codifiquen se deben guardar en un medio permanente y personal, por ejemplo un pendrive. Este elemento se debe traer todas las clases para poder trabajar adecuadamente. Si bien es permitido (y conveniente) hacer algunos ejercicios grupalmente, cada alumno debe tener su propia copia. * Los programas codificados se guardan dentro de una carpeta en el pendrive llamada ALGORITMOS. * El nombre de cada archivo tiene el formato ´utnn´ que representa el número de ejercicio (u: unidad, t: tema, nn: número en dos dígitos. Por ejemplo 1B01 es el ejercicio siguiente (unidad 1, tema B, ejercicio 01. Otro ejemplo 5D03 es el ejercicio 03 del tema D de la unidad 5. * En todos los programas que se codifiquen use comentarios en el código (al menos materia, número de ejercicio, a quién pertenece, etc.). Por ejemplo: /* ALGORITMOS - Ejercicio 3C02 Pérez, José – García, Juan 4to 1ra Computación */ 1.B.01) Escribir la codificación de un programa que imprima los nombres de las estaciones del año una a continuación de la otra, con un espacio separatorio entre ellas. Probar el programa. 1.B.02) Repetir el anterior usando el separador de tabulación. 1.B.03) Repetir el anterior para que se impriman en renglones consecutivos. 1.B.04) Repetir el anterior para que se impriman en renglones consecutivos dejando un renglón en blanco entre ellas.

1.C) CODIFICACION SECUENCIAL BÁSICA 1.C.01) Hacer la codificación mínima para el ejercicio 1.A.01. Probar en la computadora para todos los casos posibles. 1.C.02) Hacer la codificación mínima para el ejercicio 1.A.02. Probar en la computadora para todos los casos posibles. 1.C.03) Hacer la codificación mínima para el ejercicio 1.A.03. Probar en la computadora para todos los casos posibles. 1.C.04) Hacer la codificación mínima para el ejercicio 1.A.04. Probar en la computadora para todos los casos posibles. 1.C.05) Hacer la codificación mínima para el ejercicio 1.A.05. Probar en la computadora para todos los casos posibles. 1.C.06) Hacer la codificación mínima para el ejercicio 1.A.06. Probar en la computadora para todos los casos posibles. 1.C.07) Hacer la codificación mínima para el ejercicio 1.A.07. Probar en la computadora para todos los casos posibles.

Algoritmos y est. de datos – Guía de ejercicios – Prof. Daniel Luszczyk – F.R. 04/07/14 - Página 2/22

1.C.08) Hacer la codificación mínima para el ejercicio 1.A.08. Probar en la computadora para todos los casos posibles. 1.C.09) Rehacer el ejercicio 1.C.05 usando títulos, leyendas aclaratorias y renglones de espaciamiento. Probar el programa.

1.D) POSICIONAMIENTO, COLOR Y FORMATO 1.D.01) Escribir la codificación de un programa que permita imprimir la palabra HOLA en el centro de la pantalla. Probar el programa. 1.D.02) Modificar el anterior para que además la palabra quede en letras rojas sobre fondo amarillo. Probar el programa. 1.D.03) Escribir la codificación de un programa que permita que aparezca 10 veces la palabra HOLA formando una diagonal con las palabras. Probar el programa. 1.D.04) Escribir la codificación de un programa que permita que aparezca la palabra HOLA en el centro de la pantalla pero en forma vertical. Probar el programa. 1.D.05) Escribir la codificación de un programa que permita que la palabra HOLA aparezca en diagonal. Probar el programa. 1.D.06) Escribir la codificación de un programa que imprima los nombres de los primeros 8 colores (0 al 7) con el color al que hacen referencia. Probar el programa. 1.D.07) Escribir la codificación de un programa que permita ingresar un valor, calcular el 13,2% de dicho valor y mostrar en pantalla la suma de ambos (a tres decimales) de la manera habitual como se hacen sumas en un papel. Probar el programa.

1.E) INTERFAZ DE USUARIO 1.E.01) Rehacer el ejercicio 1.C.05 agregando posicionamiento, colores y formateo. Probar el programa. 1.E.02) Codificar en forma presentable para el usuario (con todos los recursos vistos) el ejercicio 1.C.07. Probar el programa.

2) ESTRUCTURAS DE CONTROL 2.A) BIFURCACIÓN CONDICIONAL PARA TODO LO QUE SIGUE DAMOS POR SABIDO QUE: * En todos los programas que se codifiquen debe usarse indentado en las estructuras. * No se olvide de agregar comentarios que faciliten el entendimiento del código. * La prueba de un programa consiste en probar todos los casos posibles. 2.A.01) Hacer el diagrama de un proceso que pida ingresar un número mayor que 17. Si el usuario ingresa mal el numero mostrar un mensaje que le indique sobre su error. Si lo ingresa bien no hacer nada. Luego codificar y probar el programa.

Algoritmos y est. de datos – Guía de ejercicios – Prof. Daniel Luszczyk – F.R. 04/07/14 - Página 3/22

2.A.02) Rehacer el anterior cambiando la forma de la condición de bifurcación. Luego codificar y probar el programa. 2.A.03) Escribir la codificación de un programa que pida que se ingrese un numero e imprimir el doble del mismo; si el numero es positivo en rojo y si es negativo en verde. Probar el programa. 2.A.04) Hacer el diagrama de un proceso que permita ingresar un numero. Si el numero es mayor que 5 informar el doble del numero; si es menor que 5 informar el triple; y si es 5 mostrar un mensaje que diga “Numero 5”. Luego codificar y probar el programa. 2.A.05) Hacer el diagrama de un proceso que permita ingresar la edad de una persona y que indique a la categoría que pertenece. Arbitrariamente las categorías son: JOVEN, menores de 20 años; ADULTO, desde 20 hasta 39 años; MAYOR, desde 40 hasta 60 años; TERCERA EDAD, los mayores de 60. Luego codificar y probar el programa. 2.A.06) Hacer el diagrama de un proceso que pida los ingresos anuales de un comercio y calcular y mostrar los impuestos a pagar. Si los ingresos no superan los $200.000 se debe pagar 3%. En caso contrario debe pagarse además un 0,2% de lo que exceda de $200.000. Luego codificar y probar el programa. 2.A.07) Hacer el diagrama de un proceso que permita ingresar el código de categoría (solamente 1 o 2) y la cantidad de días que estuvo ausente un empleado. La categoría 1 tiene un sueldo de $500 y se descuentan $20 por día ausente. La categoría 2 tiene un sueldo de $1.000 y se le descuentan 35$ por día ausente. Imprimir cuanto se debe cobrar teniendo en cuenta que el empleado no puede quedar debiendo, informando en ese caso que esta despedido. Se debe verificar si se ingresó una categoría válida y, en caso de no serlo, informar de la situación. Luego codificar y probar el programa. 2.A.08) Hacer el diagrama de un proceso que permita ingresar tres números e informe cuál de ellos es el mayor. Luego codificar y probar el programa. 2.A.09) Hacer el diagrama de un proceso que permita ingresar un número entre 12 y 32. Informar luego si el ingreso fue correcto o incorrecto. Luego codificar y probar el programa. 2.A.10) Hacer el diagrama de un proceso que permita ingresar un número que no esté entre 12 y 32. Informar luego si el ingreso fue correcto o incorrecto. Luego codificar y probar el programa. 2.A.11) Se desea ubicar a personas que tengan un número de DNI que sea mayor que 20 millones pero menor que 30 millones. Hacer el diagrama de un proceso que permita ingresar el número de DNI y que informe si la persona está en el rango buscado o no. Luego codificar y probar el programa. 2.A.12) Se desea ubicar a personas que tengan un sueldo que sea menor a 2 mil pesos o que su sueldo sea mayor a $6.000. Hacer el diagrama de un proceso que permita ingresar el sueldo y que informe si la persona está en el rango buscado o no. Luego codificar y probar el programa. 2.A.13) Se desea encontrar artículos, mediante su número de código, de modo tal que dicho código esté entre 500 y 700 o, también, cuyos códigos sean menores a 100. Hacer el diagrama de un proceso que permita ingresar el código y que informe si está entre los buscados o no. Luego codificar y probar el programa. 2.A.14) Codificar el ejercicio 2.A.07 con una interfaz de usuario presentable (color, posición, formateo, etc.). Probar el programa.

2.B) LAZOS BASADOS EN CONTADORES AUTOMÁTICOS

Algoritmos y est. de datos – Guía de ejercicios – Prof. Daniel Luszczyk – F.R. 04/07/14 - Página 4/22

2.B.01) Hacer el diagrama de un proceso que imprima 15 veces la palabra “Hola”. Luego codificar y probar el programa. 2.B.02) Hacer el diagrama de un proceso que permita imprimir la tabla del 7. Luego codificar y probar el programa. 2.B.03) Rehacer el anterior usando una variante. Luego codificar y probar el programa. 2.B.04) Hacer el diagrama de un proceso que permita imprimir la tabla del numero que ingrese el usuario. Luego codificar y probar el programa. 2.B.05) Codificar y probar en la computadora un programa que imprima la repetidamente la palabra “Hola” con los colores de 0 a 15. 2.B.06) Hacer un programa que llene de asteriscos amarillos la línea 10, imprimiendo de a uno por vez. Probar el programa. 2.B.07) Hacer un programa que imprima una “línea de asteriscos verdes” en la fila 5, desde la columna 40 hasta la 23. Probar el programa. 2.B.08) Hacer un programa que imprima una “línea de asteriscos azules” en la columna 20, desde la fila 6 hasta la 20. Probar el programa. 2.B.09) Repetir el anterior dejando un espacio entre asteriscos. 2.B.10) Hacer un programa que imprima un rectángulo centrado con asteriscos rojos. El ancho debe ser de 30 posiciones y el alto de 15. Probar el programa. 2.B.11) Hacer un programa que imprima un asterisco en la diagonal principal. Tómese como diagonal principal las coordenadas (1,1), (2,2), (3,3), ...., (23,23), .... . Probar el programa. 2.B.12) Hacer un programa que imprima un asterisco en la diagonal inversa. Tómese por ejemplo como diagonal inversa las coordenadas (80,80), (79,79), (78,78), .... . Probar el programa. 2.B.13) Hacer el diagrama de un proceso que permita ingresar el costo y el porcentaje de ganancias para 50 artículos. En cada oportunidad debe mostrarse el precio final, que se obtiene agregando al costo la ganancia y agregando a lo anterior un 21% de impuestos. Luego codificar y probar el programa. 2.B.14) Se desea ubicar a personas que tengan una edad que sea menor a 20 años o que su DNI sea mayor a 30 millones. Hacer el diagrama de un proceso que permita ingresar la edad y el DNI y que informe si la persona está en el rango buscado o no, para un total de 40 personas. Luego codificar y probar el programa. 2.B.15) Hacer un programa que haga titilar un asterisco 50 veces. Observación 1: si se imprime en una coordenada un asterisco, luego en la misma posición un espacio en blanco y se repite el proceso, se logra el efecto pedido. Observación 2: para que lo anterior funcione es necesario generar un retardo entre impresiones; una forma de lograrlo es usar un contador que no haga nada más que contar. Por aproximaciones sucesivas puede graduarse la cantidad de conteos a realizar para obtener el efecto deseado. 2.B.16) Hacer un programa haga que un asterisco se mueva de izquierda a derecha en la pantalla, sobre la fila 10. 2.B.17) Hacer un programa haga que un asterisco se mueva de derecha a izquierda en la pantalla, sobre la fila 10. 2.B.18) Combinar los dos últimos para que el asterisco “vaya y vuelva”.

Algoritmos y est. de datos – Guía de ejercicios – Prof. Daniel Luszczyk – F.R. 04/07/14 - Página 5/22

2.B.19) Modificar el anterior para que el proceso se repita 40 veces. 2.B.20) Modificar el anterior para que, en lugar del asterisco, lo que se desplace sea su nombre.

2.C) CONTADORES PARA TODO LO QUE SIGUE DAMOS POR SABIDO QUE: * Es necesario dar un valor inicial a los contadores y otras variables que lo requieran. * Cuando haga pruebas debe conocer los resultados correctos de antemano y verificar que el programa efectivamente da esos resultados correctos. Esto sirve para deducir los errores que pudieran haber en la lógica o la codificación y corregirlos. * No olvide indentar las estructuras, agregar comentarios y probar todos los casos posibles. 2.C.01) Hacer el diagrama de un proceso que permita ingresar 10 números y que informe cuantos de ellos fueron mayores que 4. Codificar y probar. 2.C.02) Hacer el diagrama de un proceso que permita ingresar 20 números y que informe el porcentaje de ellos que fueron menores a 15. Codificar y probar. 2.C.03) Se deben ingresar los sueldos de 100 personas y se desea saber: a) ¿Cuántos ganan menos de $500? b) ¿Cuántos ganan entre $500 y $1.000? c) ¿Cuántos ganan mas de $1.000? Hacer el diagrama de un proceso que permita realizarlo. Codificar y probar. 2.C.04) Se ingresan los sueldos y edades de 80 personas. Se desea saber: a) ¿Cuántos son menores de 20 años? b) ¿Qué porcentaje corresponde a los mayores de 50 años? c) ¿Cuántos ganan entre $1.000 y $500? d) ¿Cuántas personas tienen más de 40 años y ganan menos de $600? Hacer el diagrama de un proceso que permita realizarlo. Codificar y probar. 2.C.05) Se deben ingresar la cantidad de ausencias en el mes y la cantidad de horas extras realizadas por 70 personas. Se desea saber: a) ¿Cuántos no faltaron? b) Porcentaje de los que hicieron 10 horas extras o menos. c) Porcentaje de los que hicieron 5 o más horas extras y faltaron menos de 3 días. d) ¿Cuántos faltaron más de 3 veces o hicieron menos de 10 horas extras? Hacer el diagrama de un proceso que permita realizarlo. 2.C.06) Agregar al anterior la codificación necesaria para una interfaz de usuario adecuada (mensajes, separadores, color, posicionamiento, formateo, comentarios suficientes, etc.) 2.C.07) Hacer el diagrama de un proceso que permita desplazarse a un asterisco por la pantalla siguiendo la diagonal principal y haciendo que “rebote en los bordes”. El proceso puede repetirse la cantidad de veces que considere apropiado (por ejemplo 10000). Codificar y probar. 2.C.08) Modificar el ejercicio anterior de modo que en cada “ida y vuelta” el asterisco cambie de color.

2.D) ACUMULADORES 2.D.01) Hacer el diagrama de un proceso que permita ingresar 100 sueldos e informar el total a pagar. Codificar y probar. Algoritmos y est. de datos – Guía de ejercicios – Prof. Daniel Luszczyk – F.R. 04/07/14 - Página 6/22

2.D.02) Hacer el diagrama de un proceso que permita ingresar 40 edades e informar su promedio. Codificar y probar. 2.D.03) Se deben ingresar los sueldos y edades de 500 personas. Se desea saber: a) ¿Cuántos ganan entre $600 y $900? b) El porcentaje de los que ganan menos de $500. c) El total de sueldos a pagar. d) El promedio de edades. e) ¿Cuántos ganan más de $1.000 o tienen más de 50 años? Hacer el diagrama de un proceso que permita realizarlo. Codificar y probar. 2.D.04) Se deben ingresar el precio unitario y la cantidad vendida de 50 productos. Se desea saber el importe total recaudado. Hacer el diagrama de un proceso que permita realizarlo. Codificar y probar. 2.D.05) Se deben ingresar el año de fabricación y el precio de 200 autos de una concesionaria de autos usados. Se desea saber: a) El valor total de todos los autos. b) El valor total de los autos de 2005 o más nuevos. c) El promedio de precios de los autos de 1998. Considerar que no es posible dividir por cero por lo cual se deberá hacer una comprobación apropiada cuando corresponda (en los ejercicios siguientes no se volverá a recordar esto, pero se asume que debe hacerlo). Hacer el diagrama de un proceso que permita realizarlo. Codificar y probar. 2.D.06) Se deben ingresar el código postal, la cantidad de habitantes y el subsidio asignado de 200 localidades. Se desea saber: a) El total de subsidios asignados a las localidades cuyo código postal sea menor a 3000. b) El promedio de habitantes de las localidades que recibieron un subsidio de más de $10.000. c) El total de subsidios para las localidades que tienen más de 5.000 habitantes y su código sea mayor a 5.000. d) El promedio de habitantes de las localidades cuyo código esté entre 2.000 y 4.000, o de las que reciben un subsidio menor de $5.000. e) Globalmente, el subsidio por habitante. Hacer comprobaciones de las posibilidades de división por cero. Hacer el diagrama de un proceso que permita realizarlo. Codificar y probar. 2.D.07) Se deben ingresar el precio unitario, la cantidad vendida y el código de 500 artículos vendidos. Se desea saber: a) El dinero recaudado por las ventas de los artículos cuyo código esté entre 10 y 50. b) El porcentaje de las ventas cuyo total superan los $150 o están debajo de $50. c) El promedio de cantidades vendidas de los artículos cuyo precio sea mayor que $30. Hacer el diagrama de un proceso que permita realizarlo y luego codificar y probar en la computadora. 2.D.08) Agregar al anterior la codificación necesaria para una interfaz de usuario adecuada (mensajes, separadores, color, posicionamiento, formateo, comentarios suficientes, etc.)

2.E) LAZOS BASADOS EN CONDICIONES PARA TODO LO QUE SIGUE DAMOS POR SABIDO QUE: * Cuando haga una división por una variable que pueda llegar a valer cero, debe comprobar esa posibilidad y dar las respuestas adecuadas en todos los casos. * Cuando haga pruebas debe conocer los resultados correctos de antemano y verificar que el programa efectivamente da esos resultados correctos. Algoritmos y est. de datos – Guía de ejercicios – Prof. Daniel Luszczyk – F.R. 04/07/14 - Página 7/22

* No olvide indentar las estructuras, agregar comentarios y probar todos los casos posibles. 2.E.01) Hacer el diagrama de un proceso que permita ingresar un numero mayor que 10. Si es así, imprimir el doble del numero. En caso contrario avisar al usuario y repetir el ingreso hasta que se cumpla lo solicitado. Codificar y probar. 2.E.02) Se debe ingresar una cantidad indefinida de sueldos y calcular su promedio. Cuando se ingresa sueldo igual a cero no se trata de un sueldo sino que es una convención para indicar que no hay mas datos por ingresar. Hacer el diagrama de un proceso que permita realizarlo. Codificar y probar. 2.E.03) Hacer el diagrama de un proceso que permita ingresar números indefinidamente hasta que se ingrese cero. Por cada numero ingresado indicar si es positivo o negativo. Codificar y probar en la computadora. 2.E.04) Hacer el diagrama de un proceso que permita ver cualquiera de las tablas de multiplicar del 1 al 10, a medida que el usuario las vaya pidiendo. Si el usuario solicita la tabla del cero, esto indica que desea salir del proceso. Si se pide una tabla de otros números se debe informar del error y continuar el proceso. Codificar y probar en la computadora. 2.E.05) Se debe ingresar la cuota social (valor pagado en pesos) y el numero de socio de las personas que concurren a un club. Número de socio igual a cero significa fin de ingreso de datos. Se pide: a) Porcentaje de socios con numero mayor a 500. b) Cantidad de socios que pagan menos de $10 o cuyo numero sea menor a 300. c) Promedio de cuotas sociales. d) Porcentaje de socios cuya cuota social este entre $15 y $20. e) Monto recaudado por lo aportado por los socios cuyo número sea menor a 50. Hacer el diagrama de un proceso que permita realizarlo y luego codificar y probar en la computadora. 2.E.06) Se deben ingresar código, precio y existencia de una cantidad indefinida de artículos (código cero significa fin de ingreso). Se pide: a) Valor del total de los artículos. b) Porcentaje de artículos cuyo código sea inferior a 200 o que su precio este entre 5$ y 10$. c) Promedio de precios de los artículos cuya existencia sea mayor que 50. Hacer el diagrama de un proceso que permita realizarlo y luego codificar y probar en la computadora. 2.E.07) Agregar al anterior la codificación necesaria para una interfaz de usuario adecuada (mensajes, separadores, color, posicionamiento, formateo, comentarios suficientes, etc.)

2.F) DISTRIBUIDORES 2.F.01) Hacer el diagrama de un proceso que permita ingresar dos números y a continuación muestre un menú con opciones numéricas para las cuatro operaciones básicas (1: suma, 2: resta, 3: multiplicación y 4: división). El programa deberá realizar la operación solicitada entre los números que se ingresaron o nada si se ingresa una opción inválida. Codificar y probar. 2.F.02) Modificar el anterior para que, si se ingresa una opción no válida, se informe de ello y se solicite nuevamente la opción. Codificar y probar. 2.F.03) Modificar los anteriores para que el proceso se haga una cantidad indefinida de veces. Se deberá agregar una opción para salir. Codificar y probar. 2.F.04) Agregar al anterior la codificación necesaria para una interfaz de usuario adecuada (mensajes, separadores, color, posicionamiento, formateo, comentarios suficientes, etc.) Algoritmos y est. de datos – Guía de ejercicios – Prof. Daniel Luszczyk – F.R. 04/07/14 - Página 8/22

2.G) MÁXIMOS Y MÍNIMOS SIN REPETICIÓN 2.G.01) Hacer el diagrama de un proceso que permita ingresar 20 valores y que informe el mayor de ellos (puede haber negativos). Codificar y probar. 2.G.02) Repetir el anterior por un método alternativo. 2.G.03) Hacer el diagrama de un proceso que permita ingresar 25 edades e informe la menor de ellas. Codificar y probar. 2.G.04) Hacer el diagrama de un proceso que permita ingresar los sueldos y edades de 10 personas e informar la mayor edad y el menor sueldo. Codificar y probar. 2.G.05) Hacer el diagrama de un proceso que permita ingresar los DNI y sueldos de 60 personas e informar el DNI del que tiene el mayor sueldo (es uno solo). Codificar y probar. 2.G.06) Hacer el diagrama de un proceso que permita ingresar los DNI y edades de 20 personas. Se desea conocer el DNI de quien tiene la menor edad (es uno solo) y cuál es esa edad. Informar también el promedio de edades. Codificar y probar. 2.G.07) Hacer el diagrama de un proceso que permita ingresar los consumos de electricidad de los treinta días de un mes, en forma ordenada. Se desea saber en que día se consumió la menor cantidad (es una sola) y cuánto fue. Codificar y probar. 2.G.08) Hacer el diagrama de un proceso que permita ingresar en forma desordenada el número de día de un mes de 31 días y la cantidad de personas ausentes. Informar la mayor cantidad de ausencias y en cuantos días se produjo, teniendo en cuenta que puede repetirse esa cantidad. Informar además el porcentaje de días en que se produjeron mas de 5 ausencias. Codificar y probar. 2.G.09) Se ingresan en forma ordenada las ventas de 15 sucursales. Se desea saber: a) El promedio de ventas. b) El porcentaje de sucursales que vendieron entre $1.000 y $2.000. c) El numero de sucursal que realizo la menor venta (es una sola) y de cuánto fue. d) El número de sucursal que realizó la mayor venta (es una sola) y de cuánto fue. Hacer el diagrama de un proceso que permita realizarlo. Codificar y probar. 2.G.10) Se ingresan los códigos, precios y existencias de una cantidad indefinida de artículos (código cero indica fin del ingreso). Se desea saber: a) El valor total de los artículos. b) Porcentaje de artículos cuya existencia sea mayor que 10 o su precio sea inferior a $5. c) El código del artículo del que se tiene menor existencia (es uno solo) y cuál es. d) El código del artículo del que se tiene mayor capital (es uno solo) y de cuánto es. Hacer el diagrama de un proceso que permita realizarlo. Codificar y probar. 2.G.11) Agregar al anterior la codificación necesaria para una interfaz de usuario adecuada (mensajes, separadores, color, posicionamiento, formateo, comentarios suficientes, etc.)

3) VARIABLES Y EXPRESIONES 3.A) VARIABLES NUMÉRICAS

Algoritmos y est. de datos – Guía de ejercicios – Prof. Daniel Luszczyk – F.R. 04/07/14 - Página 9/22

3.A.01) Codificar un programa que declare dos variables enteras cortas (short) y asignarles un valor dentro de su rango y uno fuera respectivamente. Luego imprimirlas. ¿Qué ocurre? ¿Por qué? 3.A.02) Repetir el anterior para los tipos entero corto sin signo (unsigned short), entero (int), entero sin signo (unsigned int), entero largo (long), entero largo sin signo (unsigned long). 3.A.03) Codificar un programa que declare dos variables, una entera corta (llamada c) y otra entera (llamada e) y asignarles valores grandes dentro de su rango a cada una. Luego hacer la asignación e=c e imprimir el valor de e. ¿Qué ocurre? ¿Por qué? 3.A.04) Codificar un programa que declare dos variables, una entera corta (c) y otra entera (e) y asignarles valores grandes dentro de su rango a cada una. Luego hacer c=e e imprimir el valor de c. ¿Qué ocurre? ¿Por qué? 3.A.05) Codificar un programa que declare una variable de coma flotante (float) y asignarle el resultado de dividir 10 en 3. Imprimir la variable de modo de mostrar 20 decimales. ¿Cuántos decimales correctos obtiene? 3.A.06) Repetir el anterior para una variable de coma flotante doble (double). 3.A.07) Codificar un programa que declare una variable de coma flotante doble (d), otra de coma flotante (f) y otra entera (e). Asignarles los valores 2,000000001 , 2,0001 y 2, respectivamente. Hacer la suma de las tres tomando como destino d (d=d+f+e) e imprimir. Repetir con destino f y e. Probar el programa en los tres casos. ¿Qué ocurre al mezclar tipos de variables numéricas en operaciones?

3.B) EXPRESIONES ALGEBRAICAS Y FUNCIONES DE BIBLIOTECA 3.B.01) Codificar un programa que permita ingresar el radio de un círculo y que calcule su perímetro, su superficie y el volumen de la esfera de ese radio. Usar constantes y un valor de de 3,14159. Probar en la computadora .

π

3.B.02) Hacer el diagrama de un proceso que permita ingresar un número y que muestre la raíz cuadrada real del mismo o que se informe si no es posible. Codificar y probar en la computadora. 3.B.03) Rehacer el anterior para que se muestre el resultado real o imaginario según corresponda. 3.B.04) Hacer el diagrama de un proceso que permita mostrar una tabla de valores de la función 2x3

_______

y = ———— - √ x2 - 1 2-x

,

para valores de x entre -5 y 5 con paso de 0,5. Mostrar los resultados del modo que se suele usar en Matemática. No olvidar que ciertas operaciones tienen restricciones. Codificar y probar en la computadora. 3.B.05) Hacer el diagrama de un proceso que permita ingresar un número y que indique si es par o impar usando el operador resto. Codificar y probar en la computadora. 3.B.06) Rehacer el anterior usando la función parte entera. 3.B.07) Hacer el diagrama de un proceso que permita ingresar un número y que indique si es múltiplo de siete. Codificar y probar en la computadora. 3.B.08) Rehacer el anterior agregando que se haga un reingreso si el número ingresado no es entero. Algoritmos y est. de datos – Guía de ejercicios – Prof. Daniel Luszczyk – F.R. 04/07/14 - Página 10/22

3.B.09) Hacer el diagrama de un proceso que permita ingresar un numero con muchos decimales (6 por ejemplo) y que lo muestre redondeado a 2 decimales (usar un algoritmo, no usar formateo de números). Codificar y probar en la computadora. 3.B.10) Repetir el anterior redondeando a cuatro decimales. 3.B.11) Repetir el anterior redondeando al entero. 3.B.12) Repetir el anterior redondeando a las decenas. 3.B.13) Hacer el diagrama de un proceso que permita ingresar el cateto opuesto y el ángulo que forma con la hipotenusa en un triángulo rectángulo e informe el valor del cateto adyacente, la hipotenusa y el ángulo adyacente. Codificar y probar en la computadora. 3.B.14) Hacer el diagrama de un proceso que permita ingresar el valor nominal de una resistencia y la tolerancia de fabricación. Luego debe permitir ingresar los valores medidos de 500 de esas resistencias. Para cada una de ellas informar si están o no dentro de la tolerancia declarada (usar la función valor absoluto). Dar además el porcentaje de resistencias dentro de tolerancia. Codificar y probar en la computadora.

3.C) VARIABLES DE CARACTERES 3.C.01) Probar los siguientes códigos: a) ¿Por qué la palabra necesita 6 caracteres si tiene 5 letras? ¿Por qué no se muestran 20 caracteres en el tercer nombre? char n1[5]="Carla", n2[6]="Carla", n3[20]="Carla"; printf("%s\n%s\n%s\n",n1,n2,n3); b) ¿Por qué para la misma variable se imprime la palabra, una letra y un número? char n[6]="Carla"; printf("%s\n",n); printf("%c\n",n[0]); printf("%i\n",n[0]); c) ¿Por qué los resultados no son 6 y 20? char n1[6]="Carla", n2[20]="Carla"; int l1,l2; l1=strlen(n1); l2=strlen(n2); printf("%i\n%i\n",l1,l2); d) El siguiente código es incorrecto. ¿Cómo debe ser el código para que la variable se cargue con el segundo nombre? char n[10]="Carla"; n="Pepe"; printf("%s",n);

e) El siguiente código es incorrecto. ¿Cómo debe ser el código siguiente para que n3 contenga “Fragata Campeón”? char n1[]="Fragata"; Algoritmos y est. de datos – Guía de ejercicios – Prof. Daniel Luszczyk – F.R. 04/07/14 - Página 11/22

char n2[]="Campeón"; char n3[20]; n3=n1+n2; printf("%s",n3); f) El siguiente código es incorrecto. ¿Cómo debe ser el código siguiente para que “Azul” sea igual a “Azul”? char n1[]="Azul"; char n2[]="Azul"; if (n1==n2) { printf("Iguales");} else { printf("Distintos");} g) ¿Por qué se acorta la palabra? char n[]="Primavera"; n[4]=’ \0’ ; printf("%s",n); 3.C.02) Hacer un programa que permita ingresar el nombre y el sueldo de una persona y que imprima en pantalla una frase con dichos valores (por ejemplo, Juan gana 900 pesos). Codificar y probar en la computadora. 3.C.03) Hacer un programa que permita ingresar los apellidos y edades de dos personas y escribir una frase diciendo quien es mayor que quien (por ejemplo Juan es mayor que Pedro). Codificar y probar en la computadora. 3.C.04) Hacer el diagrama de un proceso que permita ingresar 20 apellidos y que informe el primero en orden alfabético (es uno solo). Codificar y probar en la computadora. 3.C.05) Hacer el diagrama de un proceso que permita ingresar los apellidos y sueldos de 60 personas e informar el apellido del que tiene el mayor sueldo (es uno solo). Codificar y probar. 3.C.06) Hacer el diagrama de un proceso que permita ingresar los apellidos y edades de 20 personas. Se desea conocer el apellido de quien tiene la menor edad (es uno solo) y cuál es esa edad. Informar también el promedio de edades. Codificar y probar en la computadora.

3.D) OPERADORES LOGICOS 3.D.01) Hacer un programa que muestre el resultado de la operación AND binario entre los números 123 y 200. ¿Por qué da ese resultado? Observación: escriba los 3 números en binario y observe bit por bit. 3.D.02) Repetir el anterior con la operación OR. 3.D.03) Hacer un programa que solicite las entradas A, B y C del siguiente circuito digital y que informe el valor de su salida S. Validar las entradas (sólo se admite 0 ó 1). Codificar y probar.

A S B

C

Algoritmos y est. de datos – Guía de ejercicios – Prof. Daniel Luszczyk – F.R. 04/07/14 - Página 12/22

3.D.04) Se deben ingresar nombre, precio y existencia de 200 artículos. Se pide: a) Cantidad de artículos cuyo precio sea mayor que $10 y su existencia menor que 200. b) Promedio de precios de los artículos cuya existencia sea mayor que 50 o su precio sea menor que $20. c) Cantidad de artículos cuyo precio no esté entre $3 y $7. d) Porcentaje de artículos cuyo código sea inferior a 200 o que su precio este entre 5$ y 10$. e) Nombre del artículo de mayor precio (es uno sola). Hacer el diagrama de un proceso que permita realizarlo usando operadores lógicos. Codificar y probar en la computadora. 3.D.05) Agregar al anterior la codificación necesaria para una interfaz de usuario adecuada (mensajes, separadores, color, posicionamiento, formateo, comentarios suficientes, etc.) 3.D.06) Rehacer el anterior para una cantidad indefinida de artículos (nombre “f” indica fin del ingreso).

4) FUNCIONES

En todos los siguientes en donde se pida una función, escriba su código y el de un programa principal que la use. El programa principal deberá diseñarse para que se pueda probar la función en la mayor cantidad de variantes. Si se pasan parámetros, usar la función por lo menos 3 veces, de modo que los parámetros sean constantes, valores asignados a variables y valores de variables ingresadas por el usuario. Hacer los diagramas necesarios; codificar y probar en la computadora.

4.A) PROCEDIMIENTOS 4.A.01) Hacer una función que haga que las siguientes letras que se impriman lo hagan en color rojo. Llamarla “letrasRojas”. 4.A.02) Hacer una función que haga que las siguientes letras se escriban en un color indicado por un número. Llamarla “colorLetrasNro”. 4.A.03) Ampliar el anterior para que se indique el color de las letras y el color del fondo. Llamarla “colorLetrasFondo”. 4.A.04) Hacer una función que imprima signos menos (‘-‘) la cantidad de veces indicada por el usuario. Llamarla “lineaLargoDe”. 4.A.05) Hacer una función que imprima una línea de asteriscos. Se indicarán: la fila, la columna de inicio y la columna de fin. Llamarla “lineaFilaDesdeHasta”. 4.A.06) Ampliar el anterior para que en lugar de un menos se use el carácter indicado por el usuario. Llamarla “lineaCaractCant”. 4.A.07) Hacer una función que imprima un rectángulo de asteriscos indicándole las coordenadas de los bordes superior derecho e inferior izquierdo. Llamarla “rectanguloXYsXYi”. 4.A.08) Hacer una función que limpie una zona de la pantalla indicándole las coordenadas de los bordes superior derecho e inferior izquierdo. Llamarla “limpiarXYsXYi”.

4.B) FUNCIONES PROPIAMENTE DICHAS 4.B.01) Hacer una función que calcule la raíz cúbica de un número que se le pasa. Llamarla “raiz3”. Algoritmos y est. de datos – Guía de ejercicios – Prof. Daniel Luszczyk – F.R. 04/07/14 - Página 13/22

4.B.02) Hacer una función que reciba una cantidad y un total y devuelva el porcentaje que representa la cantidad del total. Llamarla “porciento”. 4.B.03) Ídem. Redondeado al entero. Llamarla “porcientoEntero”. 4.B.04) Hacer una función que reciba el radio de un círculo y devuelva su perímetro. Llamarla “perCirc”. 4.B.05) Hacer una función que reciba el radio de un círculo y devuelva su superficie. Llamarla “supCirculo”. 4.B.06) Hacer una función que reciba el radio de una esfera y devuelva su volumen. Llamarla “volEsfera”. 4.B.07) Hacer una función reciba un año y que indique el siguiente año bisiesto. Averiguar el algoritmo para saber cuando un año es bisiesto. Llamarla “sigBisiesto”.

4.C) NOCIONES SOBRE PUNTEROS 4.C.01) Pruebe el siguiente código y luego complete el cuadro. int a; a=54; printf("El printf("El int *dir; dir =&a; printf("El printf("El

valor de a es: %i\n",a); valor de &a es: %i\n",&a);

valor de dir es:%i\n",dir); valor de *dir es:%i\n",*dir);

a

&a

dir

*dir

Significado de: Valor al ejecutar el programa: ¿Puede cambiar en este programa? 4.C.02) Agregue estas dos líneas al anterior: *dir=28; printf("El valor de a es: %i\n",a); ¿Cuanto vale a? ¿Por qué cambió su valor?

4.D) PASO DE PARAMETROS POR REFERENCIA 4.D.01) Hacer un función que calcule la raíz cúbica de un número que se le pasa en una variable pasada por referencia. Llamarla “raiz3”. Comparar con el 4.B.01. 4.D.02) Hacer una función que reciba una cantidad, un total y una variable pasada por referencia donde se almacene el porcentaje que representa la cantidad del total. Llamarla “porciento”. Comparar con el 4.B.02.

Algoritmos y est. de datos – Guía de ejercicios – Prof. Daniel Luszczyk – F.R. 04/07/14 - Página 14/22

4.D.03) Hacer una función que reciba el radio de un círculo y devuelva en tres variables que se le pasan por referencia, su perímetro, su superficie y el volumen de una esfera de dicho radio. Llamarla “radioCompleto”. Comparar con el 4.B.04, 4.B.05 y 4.B.06.

4.E) PROGRAMACIÓN MODULAR 4.E.01) Hacer un programa que muestre un menú para realizar operaciones entre números. Las opciones serán: 1) sumar, 2) restar, 3) multiplicar, 4) dividir y 5) salir. Se debe dividir el programa en funciones de acuerdo a un diseño descendente previamente realizado. 4.E.02) Hacer un programa que permita desplazarse a un asterisco por la pantalla siguiendo la diagonal principal y haciendo que “rebote en los bordes”. El proceso puede repetirse la cantidad de veces que considere apropiado (por ejemplo 10000). Este ejercicio ya fue hecho (2.C.07), ahora se debe dividir el programa en funciones de acuerdo a un diseño descendente previamente realizado.

5) ESTRUCTURAS DE DATOS 5.A) VECTORES 5.A.01) Hacer el diagrama de un proceso que permita ingresar el apellido y el sueldo de 5 personas y luego imprimir la lista completa y el promedio de sueldos. Codificar y probar en la computadora. 5.A.02) Hacer el diagrama de un proceso que permita ingresar los apellidos y edades de 8 personas. Debe informarse que porcentaje tiene 18 años o más e imprimir la lista de dichos mayores. Codificar y probar en la computadora. 5.A.03) Se desea ingresar código, nombre y precio de 6 artículos. Se desea obtener la siguiente información: a) Promedio de precios. b) Porcentaje de artículos con código mayor que 3 y precio menor que 5. c) El menor código (es uno solo). d) El nombre del artículo de menor precio (es uno solo). e) Listado completo de artículos cuyo código este entre 2 y 7. Hacer el diagrama de un proceso que permita realizarlo. Codificar y probar en la computadora. 5.A.04) Se desea ingresar nombre, superficie y habitantes de un número indefinido de países (nombre “f” indica fin del ingreso). Se desea obtener la siguiente información: a) Promedio de habitantes. b) Porcentaje de países con superficie menor a 10.000 o más de 200.000 habitantes. c) La menor superficie (es una sola). d) El nombre del país de menor cantidad de habitantes. e) Listado completo de países que tengan una superficie entre 10.000 y 50.000. Hacer el diagrama de un proceso que permita realizarlo. Codificar y probar en la computadora.

5.B) ORDENAMIENTO DE VECTORES 5.B.01) Hacer el diagrama de un proceso que permita ingresar los apellidos y sueldos de seis personas y que luego muestre la lista completa ordenada por sueldos de mayor a menor. Codificar y probar en la computadora. 5.B.02) Repetir el anterior con otro método de ordenamiento.

Algoritmos y est. de datos – Guía de ejercicios – Prof. Daniel Luszczyk – F.R. 04/07/14 - Página 15/22

5.B.03) Rehacer el anterior para que la lista se muestre ordenada alfabéticamente. 5.B.04) Hacer el diagrama de un proceso que permita ingresar los apellidos, nombres y edades de ocho personas y que luego muestre la lista completa ordenada alfabéticamente (primero por apellido, luego por nombre). Codificar y probar en la computadora. 5.B.05) Repetir el anterior agregando el porcentaje de personas que ganan más de $1000. 5.B.06) Repetir el anterior para una cantidad indefinida de personas (apellido “x” indica fin del ingreso). 5.B.07) Repetir el anterior agregando al final el promedio de edades.

5.C) BÚSQUEDAS EN VECTORES 5.C.01) Se desea ingresar los códigos, nombres y precios de 12 artículos (se garantiza que los códigos no se repetirán). Luego se debe pedir indefinidamente al usuario un código para buscar y mostrar los datos completos del artículo o un mensaje indicando que no está. Para salir de la búsqueda se ingresa código ´0´. Hacer el diagrama de un proceso que permita realizarlo. Codificar y probar en la computadora. 5.C.02) Repetir el ejercicio anterior ordenando primero los vectores y usando una búsqueda secuencial ordenada. 5.C.03) Repetir el ejercicio anterior ordenando primero los vectores y usando una búsqueda binaria. 5.C.04) Se desea ingresar los DNI, apellidos y sueldos de un número indeterminado de personas (DNI “0” indica fin del ingreso). Se garantiza que los DNI no se repetirán. Luego se debe pedir indefinidamente al usuario un DNI para buscar y mostrar los datos completos de la persona o un mensaje indicando que no se disponen datos. Para salir de la búsqueda se ingresa código ´0´. Hacer el diagrama de un proceso que permita realizarlo. Codificar y probar en la computadora. 5.C.05) Repetir el ejercicio anterior validando en el ingreso la no repetición del DNI. Si esto sucediera, se debe informar y pedir el reingreso.

5.D) AGREGADO, ELIMINACIÓN E INSERCIÓN EN VECTORES 5.D.01) Se desea ingresar los códigos, nombres y precios de 5 artículos (se garantiza que los códigos no se repetirán). Luego se debe mostrar la lista completa. Después se debe pedir al usuario un nuevo registro (código, nombre, precio) para agregar y mostrar nuevamente la lista completa para verificar su agregado. El proceso de agregado se repita hasta que se ingrese código -1 o que no quede lugar disponible (tomar vectores de por ejemplo 12 elementos). Hacer el diagrama de un proceso que permita realizarlo. Codificar y probar en la computadora. 5.D.02) Repetir el anterior validando el ingreso de los códigos iniciales. 5.D.03) Repetir el anterior validando el ingreso del nuevo código, que no puede ser igual a los existentes. 5.D.04) Repetir el anterior para que las listas salgan ordenadas por código. 5.D.05) Se desea ingresar los códigos, nombres y sueldos de 7 personas (se garantiza que los códigos no se repetirán). Luego se debe mostrar la lista completa. Después se debe pedir al usuario el código de un registro para borrarlo y mostrar nuevamente la lista completa para verificar su borrado; si el registro pedido no está, se debe informar de ello. El proceso de

Algoritmos y est. de datos – Guía de ejercicios – Prof. Daniel Luszczyk – F.R. 04/07/14 - Página 16/22

borrado se repite hasta que se ingrese código -1 o que no queden más registros. Hacer el diagrama de un proceso que permita realizarlo. Codificar y probar en la computadora. 5.D.06) Se desea ingresar los códigos, nombres y cantidad de habitantes de 4 ciudades (se garantiza que los códigos no se repetirán). Luego se debe ordenar por código y mostrar la lista completa. Después se debe pedir al usuario un nuevo registro (código, nombre, habitantes) para insertar y mostrar nuevamente la lista completa para verificar su inserción. La inserción se debe realizar de modo que se mantenga el ordenamiento por código. El proceso de inserción se repite hasta que se ingrese código -1 o que no quede lugar disponible (tomar vectores de por ejemplo 8 elementos). Hacer el diagrama de un proceso que permita realizarlo. Codificar y probar en la computadora. 5.D.07) Repetir el anterior para que se valide la no repetición del código insertado.

5.E) FUSIÓN Y PARTICIÓN CON VECTORES 5.E.01) Se desean ingresar DNI, nombre y edad de 6 personas en vectores asociados. Además, se desean cargar los mismos campos en otros tres vectores asociados para un total de 4 personas. Se desea crear otros tres vectores asociados con la unión de las dos ternas anteriores. Listar las tres ternas secuencialmente para verificar e informar además el promedio de edades y la máxima edad. Hacer el diagrama de un proceso que permita realizarlo. Codificar y probar en la computadora. 5.E.02) Modificar el anterior para que en ningún caso se permita la repetición de códigos. 5.E.03) Repetir el anterior para que la tercer terna quede ordenada por código. 5.E.04) Repetir el anterior para un número indefinido de personas en las dos primeras ternas de vectores. 5.E.05) Se desean cargar patente, año de fabricación y marca de 8 automóviles en vectores asociados. Se deben crear dos nuevas ternas de vectores asociados, una que contenga los automóviles fabricados hasta el año 2000 inclusive y la otra con los restantes. Listar las tres ternas secuencialmente para verificar e informar además el año de fabricación del más viejo y cuántos autos pertenecen a ese año. Hacer el diagrama de un proceso que permita realizarlo. Codificar y probar en la computadora. 5.E.06) Modificar el anterior para que en ningún caso se permita la repetición de patentes. 5.E.07) Repetir el anterior para que las dos últimas ternas queden ordenada por patente. 5.E.08) Repetir el anterior para un número indefinido de automóviles en la primera terna de vectores.

5.F) LISTADOS Y CONSULTAS CON VECTORES 5.F.01) Se desea ingresar el DNI, código postal (numérico) y apellido de 300 personas. Se necesita obtener un listado completo ordenado por código postal. El listado se dividirá en partes, tomando como encabezado de cada parte el código postal y luego la lista con los DNI y nombres. Al terminar con un código postal, colocar un nuevo encabezado y repetir el procedimiento anterior. Hacer el diagrama de un proceso que permita realizarlo. Codificar y probar en la computadora. 5.F.02) Repetir el anterior de modo que el ordenamiento sea por por código postal en primer lugar y por DNI en segunda instancia.

Algoritmos y est. de datos – Guía de ejercicios – Prof. Daniel Luszczyk – F.R. 04/07/14 - Página 17/22

5.F.03) Repetir el anterior mostrando al completar cada parte del listado la cantidad de personas listadas. 5.F.04) Repetir el anterior para una cantidad indefinida de personas (DNI cero indica fin del ingreso). 5.F.05) Se desea ingresar número de vendedor, día del mes (de 1 a 31) y valor vendido de un número indefinido de vendedores (número de vendedor “0” indica fin del ingreso). Se necesita obtener un listado ordenado por número de vendedor en primer lugar y número de día luego, mostrando los valores vendidos. Entre vendedor y vendedor, se debe mostrar el subtotal de cada uno. Al finalizar se deben mostrar las ventas totales. Hacer el diagrama de un proceso que permita realizarlo. Codificar y probar en la computadora. 5.F.06) Se desea ingresar los números de vendedor, el número de día (1 a 31) y la venta en pesos realizada, en forma indefinida hasta que se ingrese número de vendedor ´0´. Luego se debe borrar la pantalla y pedir indefinidamente al usuario un número de vendedor y mostrar los datos de las ventas que realizó, indicando también el total de las mismas, o un mensaje indicando que no se disponen datos. Para salir de la búsqueda se ingresa ´0´. Hacer el diagrama de un proceso que permita realizarlo. Codificar y probar en la computadora. 5.F.07) Rehacer el anterior para que las búsquedas se hagan por número de día.

5.G) MÁXIMOS Y MÍNIMOS CON REPETICIÓN 5.G.01) Hacer el diagrama de un proceso que permita ingresar los apellidos y edades de 7 personas e informar el/los apellido/s que se corresponde/n con el mayor sueldo. Codificar y probar en la computadora. 5.G.02) Hacer el diagrama de un proceso que permita ingresar los apellidos y sueldos de una cantidad indefinida de personas (apellido ´f´ indica fin del ingreso). Se desea conocer el/los apellido/s que se corresponden con el menor sueldo y cuál es ese sueldo. Informar también el promedio de sueldos. Codificar y probar en la computadora. 5.G.03) Se ingresan en forma ordenada las ventas de 15 sucursales. Se desea saber: a) El promedio de ventas. b) El porcentaje de sucursales que vendieron entre $1.000 y $2.000. c) Los números de sucursales que realizaron la menor venta y de cuánto fue. d) Los números de sucursales que realizaron la mayor venta y de cuánto fue. Hacer el diagrama de un proceso que permita realizarlo. Codificar y probar en la computadora. 5.G.04) Se ingresan los códigos, precios y existencias de una cantidad indefinida de artículos (código cero indica fin del ingreso). Se desea saber: a) El valor total de los artículos. b) Porcentaje de artículos cuya existencia sea mayor que 10 o su precio sea inferior a $5. c) Los códigos de artículos que tienen la menor existencia y cuál es. d) Los códigos de artículos que tienen el mayor capital y de cuánto es. Hacer el diagrama de un proceso que permita realizarlo. Codificar y probar en la computadora.

5.H) MATRICES 5.H.01) Se desea cargar números enteros en una matriz de 3 filas por 4 columnas. Hacer la carga por filas y mostrar luego los datos cargados en forma de tabla. Hacer el diagrama de un proceso que permita realizarlo. Codificar y probar en la computadora. 5.H.02) Repetir el anterior haciendo la carga por columnas. 5.H.03) Agregar al primero la impresión de la siguiente información: Algoritmos y est. de datos – Guía de ejercicios – Prof. Daniel Luszczyk – F.R. 04/07/14 - Página 18/22

a) Suma de la segunda fila. b) Suma de la tercer columna. c) Suma de la diagonal principal. d) Suma de la diagonal secundaria. e) Suma de todos valores. 5.H.04) Modificar el anterior para que en lugar de sumas se hagan multiplicaciones. 5.H.05) Se desean cargar valores numéricos en una matriz de 2 por 2 y se desea obtener el determinante asociado. Hacer el diagrama de un proceso que permita realizarlo. Codificar y probar en la computadora. 5.H.06) Se desean cargar las 5 ventas que tuvieron cada una las 4 sucursales de una empresa (usar una matriz). Luego se desea mostrar secuencialmente por pantalla las ventas de cada sucursal, el total de la sucursal y al final el total general. Hacer el diagrama de un proceso que permita realizarlo. Codificar y probar en la computadora. 5.H.07) Se desea cargar un vector con los nombres de 5 equipos de fútbol. En una matriz asociada se desean cargar los partidos jugados, los partidos ganados, los partidos empatados, los goles a favor y los goles en contra. Se debe generar una nueva matriz que contenga los puntos y la diferencia de gol de cada equipo y mostrar la información completa por pantalla. Hacer el diagrama de un proceso que permita realizarlo. Codificar y probar en la computadora. 5.H.08) Modificar el anterior para que la información se muestre ordenada por puntos (de mayor a menor), en segunda instancia por diferencia de gol y en última instancia por orden alfabético de equipo.

5.I) ESTRUCTURAS 5.I.01) Definir una estructura para almacenar código, apellido y sueldo de personas. Hacer un programa que permita ingresar esos datos para 5 personas e informar: a) El promedio de sueldos. b) El porcentaje de edades mayores de 25 años. c) El apellido del mayor sueldo (suponemos que es uno solo). Codificar y probar en la computadora. 5.I.02) Modificar el anterior para: d) Mostrar la lista completa de los datos ingresados. e) Mostrar la lista de códigos y apellidos de los que ganan más de $4000. f) Mostrar la lista completa de los datos ingresados ordenada alfabéticamente.

6) ARCHIVOS 6.A) ARCHIVOS SECUENCIALES 6.A.01) Se desea que se permitan ingresar 5 apellidos y sus sueldos y que se los grabe en el archivo secuencial A:\PERSONAS.DAT. Hacer el diagrama de un proceso que permita realizarlo. Codificar y probar en la computadora. 6.A.02) Hacer el diagrama de un proceso que lea el archivo anterior y que muestre los datos por pantalla. Codificar y probar en la computadora. 6.A.03) Hacer el diagrama de un proceso que permita añadir mas datos en forma indefinida al archivo del ejercicio anterior. Cuando se ingrese apellido ´x´ significa fin del ingreso. Codificar y probar en la computadora. Algoritmos y est. de datos – Guía de ejercicios – Prof. Daniel Luszczyk – F.R. 04/07/14 - Página 19/22

6.A.04) Hacer el diagrama de un proceso que lea el archivo anterior y que muestre los datos por pantalla. Codificar y probar en la computadora.

En todos los ejercicios siguientes, para verificar el resultado debe hacer un pequeño programa para visualizar los datos o usar un editor de texto plano (como el block de notas) para poder verlos. Del mismo modo, si se necesita partir de archivos para realizar lo pedido, créelos previamente con el mismo block de notas. 6.A.05) Hacer el diagrama de un proceso que permita ingresar indefinidamente código, nombre y precio de artículo (código cero significa fin del ingreso). Se pide obtener un archivo de esos datos que se encuentre en orden alfabético. Codificar y probar en la computadora. 6.A.06) Se tiene el archivo A:\EMPLEAD.DAT, que tiene los campos número de documento, apellido y edad. Se desea obtener otro archivo C:\JOVEN.DAT con los campos documento y apellido de aquellos empleados cuya edad sea menor a 30 años y otro archivo C:\MADUROS.DAT con los mismos campos pero que contengan a los empleados que tengan entre 30 y 49 años. Hacer el diagrama de un proceso que permita realizarlo. Codificar y probar en la computadora. 6.A.07) Se dispone de los archivos A:\SUC1.DAT, A:\SUC2.DAT y A:\SUC3.DAT, todos con los campos número de vendedor y cantidad de unidades vendidas. Se desea obtener un único archivo, C:\SUCURS.DAT que contenga los datos de los 3 archivos anteriores y que agregue el campo numero de sucursal en primer lugar. Hacer además un segundo programa que permita visualizar por pantalla el archivo completo agregando el importe vendido en pesos por cada sucursal. El precio de la unidad se solicitará al usuario. Hacer el diagrama de un proceso que permita realizarlo. Codificar y probar en la computadora. 6.A.08) Se dispone del archivo C:\CLIENTES.DAT, con los campos código, nombre, año de la ultima compra. Se desea depurar el archivo eliminando los clientes que no han realizado compras desde el 2000 en adelante. Para ello se debe guardar el original con la extensión .BAK y crear un nuevo .DAT con lo solicitado. Hacer el diagrama de un proceso que permita realizarlo. Codificar y probar en la computadora. 6.A.09) Se tiene el archivo A:\ARTIC.DAT con los campos código, nombre y precio, ordenado por código. Además, se tiene el archivo A:\NUEVARTI.DAT con los mismos campos, sin ningún ordenamiento, y con artículos que se deben agregar al anterior. Se desea que es inserten los nuevos artículos en el primer archivo de modo que queden ordenados y que se cree el archivo C:\REPET.DAT si se detectan códigos repetidos al agregar. Hacer el diagrama de un proceso que permita realizarlo. Codificar y probar en la computadora. 6.A.10) Se tiene al archivo A:\PIEZAS.DAT con los campos código, nombre y número de la máquina a la que pertenecen. Se desea depurar el archivo de modo que no haya códigos repetidos; para esto, se dejará en el archivo la primera aparición y la/s restante/s se guardarán en el archivo A:\DUPLIC.DAT. Hacer el diagrama de un proceso que permita realizarlo. Codificar y probar en la computadora. 6.A.11) En relación al anterior, se desea mostrar por pantalla todos los casos de repeticiones para que el usuario les asigne un nuevo código. Estos cambios se deberán agregar al archivo original. Nota: seguir criterios como los ya expuestos para crear los archivos necesarios y visualizarlos convenientemente. 6.A.012) En relación a los dos anteriores, se deberán crear tantos archivos como números de máquinas haya de modo que contengan los datos de todas las piezas que las componen. Estos archivos llevarán como nombre el número de máquina con la extensión .DAT y estarán ordenados por código. Además, el archivo original debe quedar ordenado primero por número de máquina y luego por nombre de la pieza. Nota: seguir criterios como los ya expuestos para crear los archivos necesarios y visualizarlos convenientemente.

Algoritmos y est. de datos – Guía de ejercicios – Prof. Daniel Luszczyk – F.R. 04/07/14 - Página 20/22

6.A.013) Resumir los ejercicios 10,11 y 12 en uno solo que se encargue de la depuración y el ordenamiento general. Nota: seguir criterios como los ya expuestos para crear los archivos necesarios y visualizarlos convenientemente.

6.B) ARCHIVOS ALEATORIOS 6.B.01) Hacer el diagrama de un proceso que permita guardar en un archivo aleatorio los datos de 5 artículos. Cada registro tendrá los campos código, nombre y precio con los tipos adecuados. Codificar y probar en la computadora. 6.B.02) Hacer el diagrama de un proceso que permita leer el archivo generado en el ejercicio anterior y que muestre todos los datos ingresados. Codificar y probar en la computadora. 6.B.03) Hacer el diagrama de un proceso que permita agregar indefinidamente artículos al archivo hecho en los ejercicios anteriores. Para salir se ingresa código cero. Codificar y probar en la computadora. 6.B.04) Hacer el diagrama de un proceso que permita leer el archivo generado en el ejercicio anterior y que muestre todos los datos ingresados. Tener en cuenta que en esta oportunidad no se sabe cuantos registros hay. Codificar y probar en la computadora. 6.B.05) En relación a lo ejercicios anteriores, solicitar indefinidamente al usuario que ingrese un número de registro. Si es un registro válido, mostrar los datos; si es inválido informar de ello. Ingresando número de registro cero se sale del programa. 6.B.06) Rehacer el anterior para que el usuario tenga la posibilidad de modificar el artículo que se lo muestre. 6.B.07) En relación a los ejercicios anteriores, solicitar indefinidamente al usuario que ingrese un número de registro. Si es un registro válido, borrarlo; si es inválido informar de ello. Ingresando registro cero se sale del programa. Hacer el borrado de modo que todos los registros posteriores al borrado ocupen la posición del inmediato anterior. Si el archivo que da sin registros se debe informar de ello.

6.C) ACCESO BINARIO A ARCHIVOS En algunos de los ejercicios siguientes, para crear los archivos de prueba necesarios o verificar los resultados, puede usarse un editor de texto plano (como el block de notas). 6.C.01) Hacer un programa que emule el comando “COPY” del D.O.S.. No realizar validaciones. No considerar el uso de comodines. Codificar y probar en la computadora. 6.C.02) Hacer el diagrama de un proceso que emule al “FC” (File Compare) del D.O.S.. Se deberá informar si los archivos son iguales o son distintos. Si son distintos aclarar si sus longitudes son diferentes o si hay diferencia en los bytes. En el último caso aclarar en que posición (la primera de ellas) hay diferencia en los bytes y cuales son esos bytes. Codificar y probar en la computadora. 6.C.03) Se sabe que existe un virus que se caracteriza por tener en cualquier parte del archivo la secuencia de bytes 26, 32, 197 y 251. Hacer un programa que informe si un archivo elección del usuario contiene ese virus. Hacer el diagrama de un proceso que lo realice. Codificar y probar en la computadora.

6.C.04) Se sabe que un archivo .exe tiene incorporado el nombre del autor: “DANIEL PEREZ”. Se quiere hacer una broma y cambiar el nombre del autor por “DANIEL ZEREP”. Hacer el diagrama de un proceso que lo haga. Codificar y probar en la computadora. 6.C.05) Se tiene el archivo de datos “C:\DATOS\DGI.DAT” que debe transportarse en disquete con el mismo nombre. Sin embargo, es confidencial y se decide encriptarlo escribiéndolo íntegramente al revés. Hacer el diagrama de un proceso para encriptarlo y otro para desencriptarlo. Codificar y probar en la computadora.

Algoritmos y est. de datos – Guía de ejercicios – Prof. Daniel Luszczyk – F.R. 04/07/14 - Página 21/22

6.C.06) Se tienen 2 archivos: “C:\DATOS1.DAT” y “C:\DATOS2.DAT” de igual longitud y se requiere transportarlos encriptados en “A:\DATOS.DAT” de modo que en este archivo se halle el primer byte de “DATOS1”, luego el primer byte de “DATOS2”, luego el segundo byte de “DATOS1”, luego el segundo byte de “DATOS2 y así sucesivamente. Hacer el diagrama de un proceso para encriptarlo y desencriptarlo. Codificar y probar en la computadora. 6.C.07) Un virus cambia los bytes consecutivos F2 y 3A (hexadecimales) por A7 y B4. Hacer el diagrama de un proceso que repare un archivo infectado de esta forma. Codificar y probar en la computadora.

6.C.08) Hacer el diagrama de un proceso que muestre los datos contenidos en un archivo secuencial leyéndolo en forma binaria. Suponer que el separador de campos es la combinación de los caracteres 13 y 10. Codificar y probar en la computadora. 6.C.09) Idear un algoritmo que permita encriptar un archivo sumándole un valor fijo (de un byte). Hacer el diagrama de un proceso para encriptar y otro para desencriptar. Codificar y probar en la computadora.

6.C.10) Repetir el ejercicio 6 si los archivos son de distinta longitud. 6.C.11) Hacer el diagrama de un proceso que permita dividir a un programa de gran tamaño en partes que se puedan guardar en un disquete. Codificar y probar en la computadora. 6.C.12) Hacer el diagrama de un proceso capaz de reconstruir las partes del ejercicio anterior.

Algoritmos y est. de datos – Guía de ejercicios – Prof. Daniel Luszczyk – F.R. 04/07/14 - Página 22/22

Get in touch

Social

© Copyright 2013 - 2024 MYDOKUMENT.COM - All rights reserved.