Algoritmo y Estructura de Datos Ing. en Sistemas de Información – 1º año – 2º Cuatrimestre Docente: Gabriela Ribotta Ayudante: María Laura López Trabajo práctico Nº 2 ( Estructuras de control repetitivas) Realiza el algoritmo de cada situación problemática y el programa en lenguaje C correspondiente. 1- Suponga que en el corriente año la población de Argentina es de 50 millones de habitantes y que crece constantemente a razón de x% anual. Ingresar la razón anual de crecimiento y determinar el año en el cual la población supere por primera vez los 100 millones de habitantes. 2- Evaluar la función f(x) = x + 2 x ^ 2 + 3 x ^ 3, para cada uno de los 100 primeros números naturales múltiplos de 7. 3-Presentar el siguiente triángulo rectángulo: 1 12 123 1234 ................. 1 2 3 4 5 6 7 8 ......59 4- En una producción de piezas, se ha medido la longitud de las mismas. Se considera como apta a toda pieza que mida entre 1,25 m y 1,30 m. Ingresar la lista de longitudes y calcular el promedio de longitud de las aptas, y la cantidad de piezas no aptas. Finalizar el proceso cuando la longitud sea cero. 5- Desarrolle un programa en C que determine si un cliente de una tienda departamental excede el límite de crédito de su cuenta. Para cada cliente, se dispone de los siguientes datos: a) Número de cuenta b) Saldo al inicio del mes. c) El Total de depósitos cargados al cliente en este mes. d) El total de créditos aplicados a la cuenta del cliente durante el mes. e) El límite de crédito autorizado. El programa debe introducir cada uno de estos datos, calcular el nuevo saldo (= saldo inicial + depósitos – créditos), y determinar si el nuevo saldo excede el límite de crédito del cliente. Para aquellos clientes que exceden el límite , el programa debe desplegar el número de cuenta, el límite de crédito, el saldo nuevo y el mensaje “ Límite de crédito excedido”. Informar en cuanto se excede el cliente de su límite. Ingresar 18 clientes. 6- Ingresar una lista de 10 números enteros. Determinar si el primero es menor que todos los demás. En caso afirmativo emitir el mensaje “El primero es el menor”, de lo contrario “El menor no está primero”. 7- Hacer un programa para calcular 2x para x variando entre 1 y N (ingresado por el usuario) la salida debe tener el siguiente formato: EXPONENTE RESULTADO 1 2 2 4 3 8 1 Algoritmo y Estructura de Datos Ing. en Sistemas de Información – 1º año – 2º Cuatrimestre Docente: Gabriela Ribotta Ayudante: María Laura López Debe haber dos tabulaciones de separación entre el exponente y el resultado. 8- Diseñar un programa que generar X números entre 0 y 50. Se pide calcular el promedio, la suma de todos ellos y mostrar la cantidad de números generados mayores y menores a la mitad de X. Utilice la función random() de la libreria stdlib.h. 9- Ingresar un número natural n e informar todos sus divisores. Considerar que un número no puede ser divisible por otro mayor que su mitad. 10- Ingresar un número natural n. Informar si el número es primo. Aclaración: Si un número es primo “no” tiene divisores en el intervalo (1 n). 11- Ingresar un número natural n e informar si es primo, o si es perfecto, o no cumple ninguna de las dos propiedades. Recordar que un número es perfecto cuando la suma de sus divisores es igual a este. 12- Leer ternas de números A, B, OP donde OP es un carácter que puede tomar los siguientes valores: “+”, “-”, “*”, “/”, “ T“ Se desea realizar la operación A OP B. Se pide mostrar cada uno de los resultados y la suma total de los mismos. El proceso se detiene cuando el código de operación es la letra ‘ T ’ 13- Una empresa paga a sus empleados como gerentes (quienes reciben un salario semanal fijo), a los empleados por hora (quienes reciben una paga fija por las primeras 40 horas trabajadas, y “hora y media” por las horas extras trabajadas, es decir 1.5 veces su salario por hora), a los empleados por comisión (quienes reciben $250 más 5.7 % de sus ventas brutas semanales), a los empleados por destajo (quienes reciben un monto fijo de dinero por cada elemento que producen, cada empleado por destajo en la empresa trabaja solo en un tipo de pieza). Escriba un programa semanal de cada uno de los empleados. Usted no sabe de antemano el número total de empleados. Cada tipo de empleado tiene su código de pago: los gerentes tienen el código de pago 1, empleados por hora código de empleado 2, los empleados por comisión tienen el código 3 y los empleados por destajo tienen el código 4. Calcule en cuanto asciende lo que tiene que abonar en salarios la empresa y el número de empleados ingresados. Utilice un switch para calcular el pago de cada empleado, de acuerdo con su código e indique al usuario que introduzca los datos que necesita para calcular el pago de cada empleado. 14- Ingresar una lista de números enteros. Calcular el factorial de cada número natural e informarlo. Detener el proceso cuando el número ingresado sea (-1). 15- Los reglamentos de pesca imponen un límite a la cantidad total permitida de kilos en un día de pesca. Se supone que se planea llevar un computador portátil y se necesita un programa que indique cuando se haya excedido dicho límite. Diseñar un algoritmo que primero lea el límite diario (en kg) y que luego lea los valores de entrada uno tras otro corresponderán a los pesos individuales de las presas pescadas en el orden en que se obtienen, e imprima un mensaje en el momento en que el límite haya sido excedido. Un peso de 0 indica el fin de los datos y, después de que cada pescado haya sido registrado, el algoritmo deberá imprimir el peso total que se lleva hasta ese momento 2 Algoritmo y Estructura de Datos Ing. en Sistemas de Información – 1º año – 2º Cuatrimestre Docente: Gabriela Ribotta Ayudante: María Laura López 17- Como parte de un estudio sobre el posible efecto invernadero producido por gases contaminantes, en un observatorio meteorológico se registran 24 medidas diarias de la temperatura (a intervalos de una hora) durante cada uno de los 365 días del año. Supongamos que una ola de calor es un fenómeno caracterizado por el hecho de que la temperatura máxima diaria es superior a 32 grados durante 3 o más días consecutivos. Escriba un programa en C que lea todas las temperaturas registradas durante el año, y muestre por pantalla: a) Cuantos días (consecutivos o no) se ha registrado temperaturas mayores a 32º. b) Cual ha sido la duración ( Nº de días) de la ola de calor que mas días ha durado y que día comenzó. 18- Compilar, ejecutar e interpretar la lógica del siguiente ejemplo. # include <stdio.h> # define IN 1 /*en una palabra */ # define OUT 0 /* fuera de una palabra*/ /* Este programa me permite contar las líneas, palabras y caracteres. */ void main() { int c,nl,np,nc,state; state= OUT; nl=np=nc=0; while ((c= getchar()) !=EOF){ ++ nc; if (c ==’\n’) ++nl; if (c == ‘ ‘ || c == ‘\n’ || c == ‘\t’) state = OUT; else if ( state == OUT) { state = IN; ++ np; } } printf(“palabras:%d\t lineas:%d\t caracteres:%d\n”,np,nl,nc); getche(); return; } La variable “state” registra si actualmente el programa esta o no sobre una palabra. RECUERDE: el fin de archivo (EOF) se genera presionando las teclas CTRL-Z una vez introducido el texto. 19- Teniendo en cuenta el anterior ejercicio escriba un programa que cuente espacios en blanco, tabuladores y nuevas líneas. 20- Simular el comportamiento de un reloj digital, imprimiendo la hora, minutos y segundos de un día desde las 0:00:00 horas hasta las 23:59:59 horas 3 Algoritmo y Estructura de Datos Ing. en Sistemas de Información – 1º año – 2º Cuatrimestre Docente: Gabriela Ribotta Ayudante: María Laura López 21- La secuencia de los números de Fibonacci viene definida por el hecho de que cada término, excepto los 2 primeros que valen 1, es la suma de los dos que le preceden: F(1) = F(2) = 1 F(N) = F(N-1) + F(N-2) para n >2, Así se obtiene la secuencia 1,1,2,3,5,8,13,21,34,55... Escribir un programa en C que lea del teclado un valor entero N>= 1 y muestre en la pantalla, ordenados de menor a mayor, todos los números de la secuencia de Fibonacci comprendidos entre F(1) y F(N), ambos inclusive. Ejercicios Propuestos 1- Una persona debe realizar un muestreo con 50 personas para determinar el promedio de peso de los niños, jóvenes, adultos y viejos que existen en su zona habitacional. Se determinan las categorías con base en la sig, tabla: CATEGORIA EDAD Niños 0 - 12 Jóvenes 13 - 29 Adultos 30 - 59 Viejos 60 en adelante 2- Escriba un programa que permita calcular el promedio de n números reales. 3.- Ingrese la cantidad necesaria de valores hasta que su suma supere 245 e imprima el resultado. 4.- Imprima los números comprendidos entre A y B, siendo estos ingresados por el usuario. 5- Ingresar un número n (entero positivo) generar los n primeros números pares junto con su suma parcial e informar los datos generados de la forma que indica el ejemplo: si n = 3 se tiene: pares suma parcial 2 44 666 2 8 18 6- Escriba un programa que permita jugar a doble o nada. El jugador apuesta una cantidad y tira la moneda. Si sale cara (1) obtiene doble de la cantidad apostada. Si sale cruz (0) lo pierde todo. Permitir al jugador ir jugando hasta que el jugador decida abandonar el juego. El programa debe sacar por pantalla el número de jugadas y el total ganado por el jugador ( si ha perdido debe mostrarse como número negativo). 7- Una gran empresa de productos químicos le paga a sus vendedores mediante un esquema de comisiones. Los vendedores reciben $200 semanales más el 9% de sus ventas totales durante la semana. Por ejemplo, un vendedor que vende $5000 de productos químicos durante la semana recibe $200 más el 9% de $5000, o un total de 4 Algoritmo y Estructura de Datos Ing. en Sistemas de Información – 1º año – 2º Cuatrimestre Docente: Gabriela Ribotta Ayudante: María Laura López $650. Desarrolle un programa que introduzca las ventas totales de cada vendedor durante la última semana y que calcule y despliegue los ingresos de ese vendedor. Procese las cantidades de un vendedor a la vez, hasta que se ingrese (-1) como las ventas del vendedor. 8- Calcular la cantidad de divisiores que tiene un número n. 9- Una empresa fabrica dos productos A y B, se quiere saber cual de ellos es el más aceptado en el mercado, para lo cual se realiza una encuesta. Por cada persona interrogada, se obtienen dos valores. El primer valor indica la aceptación o no del producto A según sea 1 o 0 respectivamente. El segundo valor corresponde al producto B. El fin de datos está dado por el par (2,2). Se debe informar: Total de encuestados. Porcentaje de encuestados que aceptan el producto A. Porcentaje de encuestados que aceptan el producto B. Porcentaje de encuestados que no aceptan el producto A ni el producto B. 10- Escriba un programa que lea una secuencia de números enteros menores que 120 cuando el número leido sea positivo debe escribir tantos signos – como indica el número ingresado y un signo + cada H signos –, ( H es ingresado por teclado). Si el número es 0 o negativo deberá imprimirse el mismo. Ejemplo Número leido = 7 H=2 Debe imprimirse: - -+--+--+11- Se conoce los gastos en electricidad y agua de un laboratorio químico durante cada uno de los 12 meses del año. Escribe un programa que lea dichos datos y muestre en la pantalla el gasto total en cada trimestre, el gasto total anual y le porcentaje de gastos de cada concepto sobre el total anual. 12- Se dispone de datos sobre edades y los pesos de los hijos de varias familias. Escribe un programa que lea el número de familias y para cada familia lea el número de hijos asi como la edad y el peso de cada hijo, y calcule: a) el nº máximo, mínimo y promedio de hijos por familia. b) el peso máximo, mínimo y promedio de todos los hijos. c) el peso promedio de los hijos menores de 6 años. d) el peso promedio de los hijos mayores de 6 años. 13- Un entrenador le ha propuesto a un atleta recorrer una ruta de cinco kilómetros durante 10 días, para determinar si es apto para la prueba de 5 Kilómetros o debe buscar otra especialidad. Para considerarlo apto debe cumplir por lo menos una de las siguientes condiciones: - Que en ninguna de las pruebas haga un tiempo mayor a 16 minutos. - Que al menos en una de las pruebas realice un tiempo mayor a 16 minutos. - Que su promedio de tiempos sea menor o igual a 15 minutos. 5 Algoritmo y Estructura de Datos Ing. en Sistemas de Información – 1º año – 2º Cuatrimestre Docente: Gabriela Ribotta Ayudante: María Laura López 14- Se desea obtener el promedio de g grupos que están en un mismo año escolar; siendo que cada grupo puede tener n alumnos que cada alumno puede llevar m materias y que en todas las materias se promedian tres calificaciones para obtener el promedio de la materia. Lo que se desea desplegar es el promedio de los grupos, el promedio de cada grupo y el promedio de cada alumno. 15- Un teatro otorga descuentos según la edad del cliente. determinar la cantidad de dinero que el teatro deja de percibir por cada una de las categorías. Tomar en cuenta que los niños menores de 5 años no pueden entrar al teatro y que existe un precio único en los asientos. Los descuentos se hacen tomando en cuenta el siguiente cuadro: Edad Descuento Categoría 1 5 - 14 35 % Categoría 2 15 - 19 25 % Categoría 3 20 - 45 10 % Categoría 4 46 - 65 25 % Categoría 5 66 en adelante 35 % 16- En una granja se requiere saber alguna información para determinar el precio de venta por cada kilo de huevo. Es importante determinar el promedio de calidad de las n gallinas que hay en la granja. La calidad de cada gallina se obtiene según la formula: calidad = peso de la gallina * altura de la gallina numero de huevos que pone Finalmente para fijar el precio del kilo de huevo, se toma como base la siguiente tabla: PROMEDIO TOTAL DE CALIDAD mayor o igual que 15 mayor que 8 y menor que 15 menor o igual que 8 PRECIO POR KILO DE HUEVO 1.2 * promedio de calidad 1.00 * promedio de calidad 0.80 * promedio de calidad 17- Suponga que tiene una tienda y desea registrar sus ventas por medio de una computadora. Diseñe un programa que lea por cada cliente el monto de la venta, y: a).- calcule e imprima el IVA , b).-calcule e imprima el total a pagar, c).- lea la cantidad con que paga el cliente, d).-calcule e imprime el cambio. Al final del día deberá imprimir la cantidad de dinero que debe haber en la caja. Se ingresan ventas hasta que la misma sea 0. Valide el programa de tal forma que no permita que la cantidad con la que paga el cliente sea menor a lo que debe pagar. 18- Diseñar un programa que convierta un número del sistema decimal a : a) sistema binario b)sistema octal c)sistema hexadecimal. Según se elija. 19- Escriba el programa que calcule la suma de los N primeros números impares. 20- Escriba un programa que calcule Hn (número armónico) aplicando la fórmula: 6 Algoritmo y Estructura de Datos Ing. en Sistemas de Información – 1º año – 2º Cuatrimestre Docente: Gabriela Ribotta Ayudante: María Laura López 7