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; clrscr(); a=100; b=200; c=a+b; printf(“c=%d, a*b=%d\n”, c, a*b); Algoritmo y Estructura de Datos Ing. en Sistemas de Información Docente: Gabriela Ribotta – 1º año – Ayudante: María Laura López getch(); } B. #include <stdio.h> #include <conio.h> int main() { int a=1,b=2,c=3,r; clrscr(); 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); getche(); } 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- Escribir un programa para calcular el importe de una venta en un supermercado. El usuario debe indicar carácter del producto, el precio por unidad y el nº de unidades y el programa sacará por pantalla el nombre 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. 8 - 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; 9 - 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. Algoritmo y Estructura de Datos Ing. en Sistemas de Información Docente: Gabriela Ribotta – 1º año – Ayudante: María Laura López 10- 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 11- 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. 12- 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 - 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. 14- Se ingresan tres números que representan las temperaturas máximas de tres días del mes de enero. Mostrar la mayor temperatura. 15- 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. 16- 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. 17- 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. Algoritmo y Estructura de Datos Ing. en Sistemas de Información Docente: Gabriela Ribotta – 1º año – Ayudante: María Laura López 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%. 18- 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. 19- 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 (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 ); getch(); return; } 20- 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: 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 Algoritmo y Estructura de Datos Ing. en Sistemas de Información Docente: Gabriela Ribotta – 1º año – Ayudante: María Laura López 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 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 Algoritmo y Estructura de Datos Ing. en Sistemas de Información Docente: Gabriela Ribotta – 1º año – Ayudante: María Laura López 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. 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. 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 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 Utilidad 5 % del salario 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: Algoritmo y Estructura de Datos Ing. en Sistemas de Información Docente: Gabriela Ribotta – 1º año – Ayudante: María Laura López 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. 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- 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. @@@@@ Algoritmo y Estructura de Datos Ing. en Sistemas de Información Docente: Gabriela Ribotta – 1º año – Ayudante: María Laura López $$$$$ &&&&& 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. ##### $$$$$ &&&&& 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’);