Algoritmo y Estructura de Datos Ing. en Sistemas de Información Docente: Gabriela Ribotta – 1º año – Ayudante: María Laura López Trabajo práctico Nº 1 ( Entrada, Proceso y Salida. Estruct. de control ) 1- Elegir tipos de datos convenientes para representar los siguientes datos e indicar los rangos de valores esperados para cada uno. Teniendo en cuenta los siguientes cuadros: Tipo Significado bits Rango char caracter 8 -128 a 127 int entero 16 -32768 a 32767 float flotante 32 -3.4e+48 a 3.4e+48 double doble 64 -1.7e+308 a 1.7e+308 Caract. Conv. %c %d , %i %f , %e , %g %lf MODIFICADORES DE TIPO Los modificadores o calificadores de tipo, se aplican a los enteros y caracter. Sin embargo es posible aplicar long al tipo de datos double. signed char 8 -128 a 127 %c unsigned char 8 0 a 255 %c short 16 -32768 a 32767 %hd unsigned int 16 0 a 65535 %u long int 32 -2147483648 a 2147483647 %ld unsigned long 32 0 a 4294967295 %lu Long double 64 3,4E-4932 a 3,4E+4932 %lf a. La edad de una persona b. El saldo de una cuenta bancaria c. El número de un documento de identidad d. La cantidad de días transcurridos desde el principio de la era cristiana. e. La respuesta al mensaje de Error “Cancelar, Reiterar, Ignorar?” f. La cantidad de segundos en un período máximo de doce horas. 2- Compilar, ejecutar e interpretar los resultados: A. #include <stdio.h> #include <conio.h> int main() { int a,b; char c; a=100; b=200; c=a+b; printf(“c=%d, a*b=%d\n”, c, a*b); } B. 1 Algoritmo y Estructura de Datos Ing. en Sistemas de Información Docente: Gabriela Ribotta – 1º año – Ayudante: María Laura López #include <stdio.h> #include <conio.h> int main() { int a=1,b=2,c=3,r; r=a+b; printf("%d + %d = %d\n",a,b,r); r=c-a; printf("%d - %d = %d\n",c,a,r); b++; printf("b + 1 = %d",b); } 3- En la industria XX se desea calcular el precio unitario de venta, de tres artículos. Se ingresa por teclado el valor de compra correspondiente a cada uno P1, P2, P3. Suponemos que el vendedor desea ganar el 30% del valor de compra. Mostrar el precio de venta de cada uno. 4- Calcular e imprimir la longitud de la hipotenusa de un triángulo rectángulo. Se debe ingresar la longitud de sus catetos. 5- Calcular y mostrar el cuadrado y su cubo de cada uno de tres números que se ingresan en N1, N2, y N3 respectivamente por teclado. 6- Calcular y mostrar el valor de la función Y = A (x * x) + B x + C para dos valores de x que se deben ingresar por teclado, si los respectivos valores de las constantes son respectivamente –1, -2, 3. Usar constantes. 7- Un ciber cobra $0,90 el minuto de uso de una computadora con conexión a Internet, y $0,07 la hoja impresa. Existe un cargo adicional consistente en $0,05 * X, siendo X el 1% del tiempo utilizado, en concepto de seguro. Se quiere imprimir el recibo de uso de un cliente, en el que se detallen todos los conceptos. 8- Escribir un programa para calcular el importe de una venta en un supermercado. El usuario debe ingresar una letra que representa al producto, el precio por unidad y el nº de unidades vendidas de ese producto. El programa sacará por pantalla el carácter (letra) del producto, el nº de unidades vendidas y el precio total. Preste especial atención a qué tipo de datos resulta más adecuado para cada cantidad. 9- Determinar si la suma de cualquier pareja de tres números dados es igual al tercero. Si se cumple esta condición, escribir “Iguales” y, caso contrario, escribir “Distintos”. 10 - Suponiendo que se tienen como datos las variables a, b, z y n de tipo entero y que en un programa se escribe: if (n > 0) if (a > b) z = a; else z = b; Decir si la sentencia "if" anterior es equivalente a: if (n > 0) {if (a > b) z = a; else z = b}; if (n > 0) {if (a > b) z = a; } else z = b; 2 Algoritmo y Estructura de Datos Ing. en Sistemas de Información Docente: Gabriela Ribotta – 1º año – Ayudante: María Laura López 11 - Se ingresan por teclado las notas de dos alumnos que realizaron el parcial de la asignatura “Análisis matemático I”. Mostrar la mayor nota. 12- Un empleado de banco tiene un sistema que imprime un ticket cada vez que un cliente realiza una compra de dólares. La operación tiene una comisión administrativa según la cantidad de dólares que se venden, lo que representa un sobre costo para el cliente: a. 2% si es más de 501 y menos de 1501 b. 2,5% si es mayor de 1501 y menos que 3501 c. 4 % si es mayor a 3501 El ticket muestra discriminados: la cantidad de dólares que se compraron, el valor de cada dólar, el monto de la comisión y el monto total que el cliente debe abonar por la compra. Hacer un programa que simule la compra e imprima el ticket. 13- Ingresar tres números enteros N1, N2, N3 y mostrar el resultado del cálculo, teniendo en cuenta las siguientes indicaciones: Si N1 = N2 mostrar N1 + N2 + N3 Si N1 < N2 mostrar N1 * N2 Si N1 > N2 mostrar (N1 / N2) * N3 14- Dado un boleto (definido por 3 valores de un dígito), desarrollar un programa que determine e imprima cuantos boletos hubo de los siguientes tipos: a) capicúa c) triples (3iguales) d) dobles (2 iguales) 15- Se ingresan por teclado los coeficientes de una ecuación de segundo grado. Mostrar si las raíces son reales y distintas, iguales o complejas. Si son reales, calcularlas. 16- Calcular y mostrar el sueldo básico y el sueldo neto de un empleado, si se ingresa el número de horas trabajadas (H), el valor por hora para ese empleado (V), y la antigüedad para el mismo (A). El sueldo básico surge de: SB = H * V. Si el sueldo básico excede los 500 pesos y la antigüedad no es mayor a 10 años, el neto surgirá de deducir 30 pesos del básico en concepto de impuestos. Si el básico es menor o igual a 500 pesos, pero la antigüedad es de 10 años o más, el neto será igual al básico más el 30%. En toda otra situación el neto será igual al básico. 13 -Cierto atleta pierde en sus carreras 100 gramos de peso por cada 50m recorridos. Su entrenador desea un programa que a partir de datos como · Peso del corredor · Longitud del circuito (nunca menor a 50m) · Tiempo empleado (en seg.) Cumpla con los siguientes puntos: a. Determinar cuántos gramos pierde el corredor y cuál es su peso final b. Si ha perdido más de 300g de peso, indicar que necesitará vitamina A y si pierde más de 450g necesitará también vitamina C c. Sabiendo que para el circuito olímpico el tiempo récord es de 25 seg., y que para el 3 Algoritmo y Estructura de Datos Ing. en Sistemas de Información Docente: Gabriela Ribotta – 1º año – Ayudante: María Laura López circuito panamericano el tiempo récord es de 15 seg., determinar si el corredor ha mejorado alguno de estos récords. 17 - El programa irá preguntando por la cantidad de billetes y monedas de cada valor que tiene el usuario y luego determinará la suma de dinero que hay en monedas y luego la suma de dinero que hay en billetes. Luego el programa dirá la suma total de dinero que hay. Finalmente el programa dará al usuario la posibilidad de transformar la cantidad en el equivalente en dolares o euros, según lo decida el usuario. 18- Se ingresan tres números que representan las temperaturas máximas de tres días del mes de enero. Mostrar la mayor temperatura. 19- Diseñe un programa que convierta una medida dada en pies a sus equivalentes en: a) Yardas b) Pulgadas c) Centímetros d) Metros Sabiendo que 1 pie = 12 pulgadas, 1 yarda = 3pies, 1 pulgada = 2,54 cm, 1 m = 100 cm. 20- En una competencia de 2 pruebas, se registraron los tiempos parciales en pedestrismo y ciclismo de los tres primeros atletas que terminaron la competencia. En pedestrismo se hicieron 17 km.. El ganador absoluto de la competencia es el que acumula mejor tiempo total en la suma de los tiempos de las dos pruebas. Ingresar los resultados de las pruebas por competidor y determinar: El ganador de ciclismo y el ganador absoluto. El promedio de tiempo por km. En pedestrismo del ganador absoluto y la diferencia existente con los respectivos promedios de los otros dos competidores. Nota: los tiempos están dados en minutos. Suponer que los promedios son distintos. 21- Una línea de belleza posee un régimen de ventas a domicilio y sus artículos están clasificados de acuerdo al tipo de cliente en Damas, Caballeros y Niños, correspondiendo un código a cada uno: D, C, N respectivamente. Al finalizar el mes se requieren ciertas estadísticas. INGRESAR como dato el código de c/producto y la ganancia que éste reportó en el mes. Obtener: -El porcentaje que representa la ganancia producida por cada producto sobre la ganancia total. -El código de artículo que mayor ganancia reportó. -El código de artículo que menor ganancia reportó, pero sólo mostrar esta información si el porcentaje es superior al 20%. 22- Realice un programa que determine si un año es bisiesto. Tomando como referencia que un año bisiesto es divisible entre 4 pero no entre 100, excepto aquellos años que son divisibles por 400, que si son bisiestos. 23- El gobierno del estado de México desea reforestar un bosque que mide determinado numero de hectáreas. Si la superficie del terreno excede a 1 millón de metros cuadrados, entonces decidirá sembrar de la sig. manera: 4 Algoritmo y Estructura de Datos Ing. en Sistemas de Información Docente: Gabriela Ribotta – 1º año – Ayudante: María Laura López Porcentaje de la superficie del bosque Tipo de árbol 70% pino 20% oyamel 10% cedro Si la superficie del terreno es menor o igual a un millón de metros cuadrados, entonces decidirá sembrar de la sig. manera: Porcentaje de la superficie del bosque Tipo de árbol 50% pino 30% oyamel 20% cedro El gobierno desea saber el número de pinos, oyameles y cedros que tendrá que sembrar en el bosque, si se sabe que en 10 metros cuadrados caben 8 pinos, en 15 metros cuadrados caben 15 oyameles y en 18 metros cuadrados caben 10 cedros. También se sabe que una hectárea equivale a 10 mil metros cuadrados. Ejercicios Propuestos 1- Calcular e imprimir el sueldo básico y el sueldo neto de un empleado. Se ingresa la cantidad de horas trabajadas (H), el valor por hora para ese empleado (V) y la antigüedad del mismo (A). SB = H * V SN es el SB más el 1,5% del sueldo básico por cada año de antigüedad. 2- En la industria XX se desea calcular y mostrar el 15% de cada uno de tres sueldos jerárquicos, que se ingresan por teclado en S1, S2, S3 respectivamente. Mostrar el porcentaje correspondiente a cada sueldo. 3- Ingresar dos números los cuales constituyen las coordenadas de un punto del plano. Informar a qué cuadrante pertenece el punto y si está en el primer cuadrante hallar la distancia al origen de coordenadas. 4- Una temperatura Celsius (centígrados) C puede ser convertida a una temperatura F de acuerdo a la siguiente fórmula: F=(9/5)* C + 32 Escribir un programa que lea una temperatura Celsius C como número decimal y obtenga la temperatura Fahrenheit equivalente. 5- Un sistema de ecuaciones lineales ax + by =c dx + ey = f se puede resolver con las siguientes fórmulas: x = c*e – b*f y= a*f – c*d a*e - b*d a*e – b* d Diseñar un programa que lea dos conjuntos de coeficientes (a, b, c; d, e y f) y visualice los valores de x e y. 6- En un hospital existen tres áreas: Ginecología, Pediatría, Traumatología. El presupuesto anual del hospital se reparte conforme a la sig. tabla: Área Porcentaje del presupuesto 5 Algoritmo y Estructura de Datos Ing. en Sistemas de Información Docente: Gabriela Ribotta – 1º año – Ayudante: María Laura López Ginecología 40% Traumatología 30% Pediatría 30% Obtener la cantidad de dinero que recibirá cada área, para cualquier monto presupuestal. 7- Un obrero necesita calcular su salario semanal, el cual se obtiene de la sig. manera: Si trabaja 40 horas o menos se le paga $16 por hora Si trabaja más de 40 horas se le paga $16 por cada una de las primeras 40 horas y $20 por cada hora extra. 8- Hacer un algoritmo que imprima el nombre de un artículo, clave, precio original y su precio con descuento. El descuento lo hace en base a la clave, si la clave es 01 el descuento es del 10% y si la clave es 02 el descuento en del 20% (solo existen dos claves). 9- Calcular el número de pulsaciones que debe tener una persona por cada 10 segundos de ejercicio aeróbico; la formula que se aplica cuando el sexo es femenino es: num. pulsaciones = (220 - edad)/10 y si el sexo es masculino: num. pulsaciones = (210 - edad)/10 10- Una compañía de seguros está abriendo un depto. de finanzas y estableció un programa para captar clientes, que consiste en lo siguiente: Si el monto por el que se efectúa la fianza es menor que $50 000 la cuota a pagar será por el 3% del monto, y si el monto es mayor que $50 000 la cuota a pagar será el 2% del monto. La afianzadora desea determinar cuál será la cuota que debe pagar un cliente. 11- Una empresa de bienes raíces ofrece casas de interés social, bajo las siguientes condiciones: Si los ingresos del comprador son menores de $8000 o más el enganche será del 15% del costo de la casa y el resto se distribuirá en pagos mensuales, a pagar en diez años. Si los ingresos del comprador son menos de $8000 o más el enganche será del 30% del costo de la casa y el resto se distribuirá en pagos mensuales a pagar en 7 años. La empresa quiere obtener cuanto debe pagar un comprador por concepto de enganche y cuanto por cada pago parcial. Se debe pedir el ingreso y el costo de la casa. 12- Determinar la cantidad de dinero que recibirá un trabajador por concepto de las horas extras trabajadas en una empresa, sabiendo que cuando las horas de trabajo exceden de 40, el resto se consideran horas extras y que estas se pagan al doble de una hora normal cuando no exceden de 8; si las horas extras exceden de 8 se pagan las primeras 8 al doble de lo que se pagan las horas normales y el resto al triple. Ingresar como dato las horas. 13- Calcular la utilidad que un trabajador recibe en el reparto anual de utilidades si este se le asigna como un porcentaje de su salario mensual que depende de su antigüedad en la empresa de acuerdo con la sig. tabla: Tiempo Menos de 1 año Utilidad 5 % del salario 6 Algoritmo y Estructura de Datos Ing. en Sistemas de Información Docente: Gabriela Ribotta 1 año o más y menos de 2 años 2 años o más y menos de 5 años 5 años o más y menos de 10 años 10 años o más – 1º año – Ayudante: María Laura López 7% del salario 10% del salario 15% del salario 20% del salario 14- El dueño de una empresa desea planificar las decisiones financieras que tomara en el siguiente año. La manera de planificarlas depende de lo siguiente: Si actualmente su capital se encuentra con saldo negativo, pedirá un préstamo bancario para que su nuevo saldo sea de $10 000. Si su capital tiene actualmente un saldo positivo pedirá un préstamo bancario de $20 000, pero si su capital tiene actualmente un saldo superior a los $20 000 no pedirá ningún préstamo. Posteriormente repartirá su presupuesto de la siguiente manera: $5 000 para equipo de computo $2 000 para mobiliario y el resto la mitad será para la compra de insumos y la otra para otorgar incentivos al personal. Desplegar que cantidades se destinaran para la compra de insumos e incentivos al personal y, en caso de que fuera necesario, a cuánto ascendería la cantidad que se pediría al banco. Ingresar el capital. 15- Una institución educativa estableció un programa para estimular a los alumnos con buen rendimiento académico y que consiste en lo siguiente: Si el promedio es de 9.5 o más y el alumno es de preparatoria, entonces este podrá cursar 55 unidades y se le hará un 25% de descuento. Si el promedio es mayor o igual a 9 pero menor que 9.5 y el alumno es de preparatoria, entonces este podrá cursar 50 unidades y se le hará un 10% de descuento. Si el promedio es mayor que 7 y menor que 9 y el alumno es de preparatoria, este podrá cursar 50 unidades y no tendrá ningún descuento. Si el promedio es de 7 o menor, el numero de materias reprobadas es de 0 a 3 y el alumno es de preparatoria, entonces podrá cursar 45 unidades y no tendrá descuento. Si el promedio es de 7 o menor, el numero de materias reprobadas es de 4 o mas y el alumno es de preparatoria, entonces podrá cursar 40 unidades y no tendrá ningún descuento. Si el promedio es mayor o igual a 9.5 y el alumno es de profesional, entonces podrá cursar 55 unidades y se le hará un 20% de descuento. Si el promedio es menor de 9.5 y el alumno es de profesional, entonces podrá cursar 55 unidades y no tendrá descuento. Obtener el total que tendrá que pagar un alumno si la colegiatura para alumnos de profesional es de $300 por cada cinco unidades y para alumnos de preparatoria es de $180 por cada cinco unidades. 16- Escribir un programa que, pida la fecha de nacimiento de una persona e imprima por pantalla su signo zodiacal. 17- Dado el siguiente programa, realiza un seguimiento de la ejecución con los siguientes supuestos: (a) a=0, b=0, c=5, d=3 (b) a=2, b=1, c=5, d=3 (c) a=2, b=1, c=2, d=2 7 Algoritmo y Estructura de Datos Ing. en Sistemas de Información Docente: Gabriela Ribotta – 1º año – Ayudante: María Laura López (d) a=2, b=1, c=0, d=0 int main ( ) { int a,b,c,d; scanf (“%d %d %d %d”, &a,&b,&c,&d); if (((a>0) | | (b>a)) && ( c!= d)) { a = c; b = 0; } else { c+=d; if (c= = 0) c= c+b; else c= c-a; b= a + c+ d; } printf (”Los valores finales son a=%d, b= %d, c= %d, d= %d”, a,b,c,d ); } 18- Modifique el siguiente código para producir la salida que aparece a continuación. No debe hacer cambio alguno que no sea el de insertar llaves. if (y==8) if (x==5) printf (“@@@@@\n”); else printf(“#####\n”); printf(“$$$$$\n”); printf(“&&&&&\n”); a) Si suponemos que x=5 y y=8, se produce la siguiente salida. @@@@@ $$$$$ &&&&& b) Si suponemos que x=5 y y=8, se produce la siguiente salida. @@@@@ c) Si suponemos que x=5 y y=8, se produce la siguiente salida. @@@@@ &&&&& d) Si suponemos que x=5 y y=7, se produce la siguiente salida. ##### $$$$$ &&&&& 8 Algoritmo y Estructura de Datos Ing. en Sistemas de Información Docente: Gabriela Ribotta – 1º año – Ayudante: María Laura López Ejercicios de Auto Evaluación 1- Complete los espacios en blanco. a) Todo programa en C comienza su ejecución en la función _____________ b) La _______________ comienza el cuerpo de toda función, y la _______________ finaliza el cuerpo de toda función. c) Toda instrucción finaliza con un ____________ . d) La función _____________ de la biblioteca estándar despliega información en la pantalla. e) La secuencia de escape \n representa una ___________, la cual ocasiona que l cursor se coloque al principio de la siguiente línea de la pantalla. f) La función ___________ de la biblioteca estándar se utiliza para obtener datos desde teclado. g) El especificador de conversión __________ se utiliza en una cadena de control de formato para indicar que se introducirá o mostrará un entero. h) La instrucción ________ se utiliza para tomar decisiones. 2- Indique Verdadero o Falso a. Los operadores en C se evalúan de izquierda a derecha. b. Cuando se llama a una función printf, ésta siempre comienza la impresión al principio de una nueva línea. c. Los siguientes son nombres de variables válidos: _guion_bajo, m9831, sus_ventas, a, b, z, z2. d. La instrucción printf(“a=5;”); es un típico ejemplo de una instrucción de asignación. e. Una expresión aritmética válida que no contiene paréntesis se evalúa de izquierda a derecha. f. C considera idénticas a las variables numero y NuMero. g. Las declaraciones pueden aparecer en cualquier parte del cuerpo de una función. h. Todos los argumentos que se encuentren después de la cadena de control de formato en una función printf deben ser precedidos por un ampersan (&). i. El operador módulo (%) puede utilizarse sólo con operadores enteros. j. Un programa que imprime tres líneas como resultado debe contener tres instrucciones printf. k. A todas las variables se les asigna un tipo cuando se declaran. 3- Indique y corrija los errores de las siguientes instrucciones. (Nota: puede haber más de un error cada ejercicio.) a) printf (“el valor es %d\n, &numero); b) scanf (“%d%d”, &numero1, numero2); c) if (c < 7); printf (“C es menor que 7\n”); d) if (c=> 7); printf (“C es mayor o igual que 7\n”); e) printf( “la suma es %d\n,” x+y); f) printf(“el valor que escribió es: %d\n, & valor g) printf(“%c”, “x”); h)printf(“%s\n”, ‘Feliz Cumple’); i)La siguiente instrucción debe imprimir los caracteres ‘o’ y ‘k’: printf (“%s%s\n”, ‘o’,’k’); 9