Universidad Nacional Autónoma de Honduras Facultad de Ciencias Guías de ejercicios Programación I MM314/IC200 Escuela de matemáticas y ciencias de la computación Departamento de matemática aplicada 8 Guía primer foro Esta guía comprende un conjunto de ejercicios donde se solicita el pseudocódigo de los mismos. 1. Dadas tres cantidades reales positivas que representan las longitudes de tres segmentos, verificar si se puede formar un triángulo con esos segmentos; si se puede, diga qué tipo de triángulo: escaleno, isósceles propio o equilátero. Imprima en cada caso el mensaje correspondiente. 2. Elabore un algoritmo que reciba como entrada dos números enteros y finalmente determine si uno es divisor del otro. 3. Escriba un algoritmo que use bloques de repetición para resolver el siguiente problema: Suponga que se desean encontrar las parejas de enteros (x, y) tales que xy = x + y. Asuma para este ejercicio que |x| + |y| < 20. Determine cuales son las posibles parejas de valores que cumplen con esta condición. 4. Escriba un algortimo para calcular el valor de la presión en libras por pulgada cuadrada (psi) de una onda descrita como sigue: • Para el tiempo t, menor o igual a 35 segundos, la presión es 0.46t psi, y para un tiempo mayor a 35 segundos, 0.19t + 9.45 psi. • El programa deberá pedir el tiempo como entrada y la presión como salida. 5. Construya un algoritmo que reciba como datos de entrada tres números enteros, y regrese como dato de salida un mensaje que diga si esos tres números enteros pueden ser las medidas de los lados de un triángulo rectángulo. 6. Diseñe un algoritmo en el que dada una cantidad de minutos, calcule su equivalente en días, horas y minutos de manera compacta. 7. Escriba un algortimo que pida al usuario dos números. Si el primer número es mayor que el segundo, el programa deberá imprimir el mensaje "el primer número es mayor"; de lo contrario deberá imprimir "el primer número es menor". Pruebe su algoritmo con los números 5 y 8, luego con 11 y 2. ¿Qué piensa que desplegará su algoritmo si los dos números son iguales? Pruebe este caso. 8. La tolerancia de componentes críticos en un sistema se determina por la aplicación de acuerdo con la siguiente tabla: 1 Especificación Exploración espacial Grado militar Grado comercial Grado de jueguete Tolerancia Menor que 0.1% Mayor o igual a 0.1% y menor que 1% Mayor o igual a 1% y menor que 10% Mayor o igual que 10% Usando esta información escriba un algoritmo que acepte la lectura de tolerancia de un componente y determine la especificación que debería asignarse al componente. 9. Escriba un algoritmo que acepte un número y luego una letra. Si la letra que sigue al número es F, el programa tratará al número introducido como una temperatura en grados Fahrenheit, convertirá el número a los grados Celsius equivalentes y desplegará un mensaje adecuado. Si la letra que sigue al número es C, el programa tratará al número introducido como una temperatura en grados Celsius, convertirá el número a los grados Fahrenheit equivalentes y desplegará un mensaje adecuado. Si la letra no es F ní C entonces en el algoritmo se imprimirá un mensaje de error. 10. Escriba un algoritmo que pida al usuario tres números enteros y emita un mensaje que indique si los números fueron ingresados en orden numérico. 11. Escriba un algoritmo que use bloques de repetición para resolver el siguiente problema: Suponga que se desean encontrar las parejas de enteros (x, y) tales que x2 − y 2 = 105. Asuma para este ejercicio que |x| + |y| ≤ 105. Determine cuales son las posibles parejas de valores que cumplen con esta condición. a 12. Sea el cociente de dos números enteros, donde b 6= 0. Redondee el resultado de dicha expresión al b entero más cercano. Si tal división entera cae en la mitad, redondéela al mayor entero. 13. Dados dos puntos en un plano, calcule la distancia entre ambos. Maneje apropiadamente los casos que se presentan. Si los puntos: • Pertenece a una recta oblicua. • Son iguales. • Pertenece a una recta horizontal. • Pertenece a una recta vertical. 14. Un rectángulo puede ser representado en un plano a partir de cuatro puntos; determine, si dadas las coordenadas de cuatro puntos del plano, éstos pueden ser los vértices de un rectángulo. 15. Escriba un algortimo que clasifique un entero n leído del teclado de acuerdo a los siguientes puntos: (a) Si n ≥ 30 o n < 0. (b) Si n es primo o potencia de 2. (c) Si es cero o 1. 16. Escriba un algortimo que reciba como entrada las coordenadas de dos vértices opuestos de un rectángulo, imprima las coordenadas de los otros dos vértices. el usuario ingresará las dos coordenadas (x1 , y1 ) y (x2 , y2 ) en el orden x1 , y1 , x2 , y2 . 17. Se sabe que el primer día de un mes es domingo. Haga un algoritmo que reciba como entrada un número entero n (1 ≤ n ≤ 31) correspondiente a un día de ese mes e imprima en qué día de la semana cae ese día n. 18. El costo de inscripción en un concurso de algoritmia es de 100,000 pesos por inscripción de la universidad más 5000 pesos por cada alumno participante. Si la universidad se inscribe con al menos 250 participantes, no se cobran los 100,000 pesos de inscripción del colegio. Haga un algoritmo que reciba como entrada el número de estudiantes que un colegio va a escribir en un evento de olimpiadas y que calcule el monto de pago de la inscripción. 2 19. Haga un algoritmo que reciba como entrada tres números y diga si hay alguno que sea múltiplo de los otros dos; en caso afirmativo debe decir cual es. 20. Haga un algoritmo que reciba como entrada cuatro números y diga si la diferencia de dos de ellos es igual a la diferencia de los dos restantes. 21. Haga un algoritmo que reciba tres vértices adyacentes de un pentágono regular e imprima el área de este pentágono. 22. Dado un número entero n entre 1 y 26, muestre en pantalla un triángulo alfabético como el mostrado en el ejemplo. Ejemplo, suponga que n = 3, entonces la salida sería: a bb ccc 23. Suponga que se pide al usuario dos fechas en el formato día, mes, y año, correpondiente a la fecha de nacimiento y la fecha actual, respectivamente. Escriba un programa que calcule y visualice la edad del individuo con precisión hasta los meses. 24. Se leen las coordenadas (a, b), (c, d), (p, q) y (r, s) correspondientes a cuatro puntos diferentes del Plano Cartesiano; por los dos primeros puntos pasa la recta L1 y por los dos últimos la recta L2 . Determine si las rectas son perpendiculares, paralelas o no cumplen con ninguna de estas relaciones. 25. Dados tres números reales que representan las medidas de los ángulos, verifique si corresponden a la existencia de un triángulo; si así fuese, escriba el tipo de triángulo que es, según la medida de sus ángulos. 26. Suponga que se piden al usuario los valores a, b y c asociados al polinomio p(x) = ax2 + bx + c. Escriba un programa que proporciones el intervalo real donde p(x) es mayor que cero. Las salidas podrían ser: el conjunto vacío, todos los reales, un intervalo abierto, dos rayos o un rayo. En este ejercicio b y c son diferentes de cero, pero a si puede ser cero. 27. Considere la siguiente función: 3 x < −1 2x − 5 si 2x − 5 si −1 ≤ x ≤ 1 f (x) = 4 − x2 si x≥1 Elabore un algoritmo que pida al usuario dos extremos del intevalo [a, b] con a < b y −21 ≤ a, b ≤ 0. El algoritmo deberá imprimir el intervalo máximo [c, d] tal que para cualquier x ∈ [c, d] se siga que f (x) ∈ [a, b]. 28. Una compañía de teléfonos cobra por un número telefónico una cantidad determinada por pulsos realizados y L.85.00 más por derecho de línea por lo que obtiene un bono de 15 pulsos. Para incentivar el uso del teléfono, se cobra menos por un mayor número de pulsos registrados de acuerdo a la siguiente tabla: Categoría No. de pulsos Baja 0 a 200 Media 201 a 800 Alta 801 en adelante Precio por pulso 40 cts. 30 cts. 20 cts. Haga un algoritmo para varios abonados que lea la cantidad de pulsos consumidos y escriba la factura correspondiente (La factura debe incluir el impuesto sobre ventas). 3 29. Escriba un algoritmo que calcule y visualice el más grande, el más pequeño y la media de N números. El valor de N se solicitará al inicio del algoritmo y los números serán ingresados por el usuario. 30. Modifique el algoritmo anterior, de tal forma que muestre el absoluto mayor y el absoluto menor. Se entiende por mayor absoluto de un conjunto de números, al mayor elemento de estos, con la condición adicional de que este no se repite. Similarmente se define absoluto menor. Ejemplo: Entrada: 1 2 3 3 5 5 Salida: Media: 2.66, Menor absoluto: 1, No hay mayor absoluto. 31. Calcule el factorial de un número leído por el algoritmo, usando la sentencia MIENTRAS. 32. Cuente el número de enteros positivos que finalizan con el número 11, ingresados por el usuario. El algoritmo debe terminar la lectura ingresando el valor de cero. Ejemplo: Entrada: 4 311 345 2311 345 45011 56711 1 2 0 Salida: 4 33. Se leen varios números entre 1 y 9, ambos inclusive, que no tienen que estar en orden y que pueden o no estar repetidos. Calcule e imprima: • la cantidad de números menores que o iguales a 7; • la cantidad de números mayores que 7. Al final se lee el número –1 para indicar que no hay más números por leer. 36. 34. Haga un algoritmo para hallar de un conjunto de N números qué porcentaje son cero, qué porcentaje son positivos y el porcentaje de negativos. Ejemplo: Entrada:-1 2 -3 8 9 9 -4 0 5 5 6 0 Salida: Positivos: 58.3%, Ceros: 16.6%, Negativos: 25%. 35. Haga un algortimo para hallar cuántos números se deberion haber leído de un conjunto dado para que la suma de los negativos dé, en valor absoluto, mayor que 1200. Ejemplo: Entrada: -16 2 -300 8 9 9 -4000 salida: 7 36. Diseñe un algoritmo que reciba como dato un número entero y a partir de este, genere el número de un dígito (entre 0 y 9) más grande, sumando los dígitos de derecha a izquierda tantas veces como sea posible. Ejemplo: Entrada: 3265 Salida: 7 En este ejemplo se empezó con 5, luego se le sumó 6, como 5+6=11, el 6 se descarta y se sigue con el 2, luego se tendría 5+2=7. Se continua sumando 3, pero 3+7=10 y entonces el 3 se descarta y por lo tanto el algoritmo termina y devuelve 7. 37. Escriba los primeros n números triangulares, donde n es un número natural mayor que 0. Además, y en particular, haga que el penúltimo número se acompañe del mensaje “Este es el penúltimo número triangular“. 38. Se leen diez números, cada uno entre 1 y 30. Para cada número leído, el programa deberá imprimir una línea conteniendo dicho número en asteriscos adyacentes. 39. En una escuela de 600 estudiantes se realizará la elección del Presidente del Gobierno Escolar, para lo cual los estudiantes votarán de la siguiente forma: 1 o M por María, 2 o L por Luis, 3 o T por Tania y 4 o J por de Juan. Escriba un programa determine el nombre del ganador y el número de votos nulos. 40. En una sección de MM-314 se aplicarán 4 exámenes, de los cuales se eliminará el más bajo de los 3 primeros y se promediará con los dos exámenes más altos de los tres primeros y el cuarto examen. Escriba un programa que calcule el promedio para cada alumno de la sección. 4 41. En una tienda de ciertos productos, por cada venta realizada de cada uno de tres dependientes, se registra en el ordenador el código del dependiente A, B o C que hizo la venta; a su vez se registra el valor total de la factura de la venta efectuada por cada dependiente. Al final de todos los datos se leerá una factura ficticia con código de dependiente F y el valor total de cero como marca de fin de datos. Calcule el promedio de venta de cada dependiente. 42. En una farmacia se aplica el descuento del 25% por la compra de medicamentos para las personas de la tercera edad que presentan receta médica, el 15% para los clientes con receta, el 30% para los empleados de la farmacia que compran con receta, y sin descuentos para personas que no caen en ninguna de las categorías anteriores. Escriba un programa tal que lea la venta total de medicina por cliente y el código del tipo de cliente; al final del día se desea calcular el promedio de ventas diarias por tipo de clientes. La farmacia utiliza un código para distinguir el tipo de cliente:1 para empleados de la farmacia con receta, 2 para clientes con receta médica, y para los clientes de la tercera edad con receta el número 3, y cualquier otro número entero para los demás clientes. 43. Una fábrica de autos tiene varios empleados trabajando en dos turnos: por la mañana 0 y por la tarde 1. De acuerdo al número de horas diarias trabajadas, se desea calcular el sueldo semanal devengado por cada empleado si se sabe que todos trabajan 5 días a la semana y bajo las siguientes tarifas: • L.70.00 por hora, si el turno es matutino y • L.90.00 por hora, si trabaja en la jornada vespertina. Además, si se pasan de las 40 horas semanales, las horas se consideran extras y se pagan a razón de: • 2 veces la hora ordinaria para el turno matutino y • 3 veces la hora ordinaria para el turno vespertino. Observación: Haga uso de un centinela para indicar el fin de los datos. 44. Los números cuadrados perfectos son: {1, 4, 9, 16, 25, · · · } ; es decir, cada número natural elevado al cuadrado, a excepción del cero. Escriba un programa que lea n (n: cantidad de cuadrados perfectos a tratar) y que imprima los cuadrados perfectos pares. 45. Haga un programa para encontrar y desplegar en la pantalla el número natural N más pequeño tal que la suma 1 + 2 + ... + N exceda un valor entero positivo introducido por el teclado. Por ejemplo, si el entero positivo introducido por el teclado es 38, entonces N =9 pues: 1 + · · · + 9 = 45 > 38 1 + · · · + 8 = 36 < 38 46. Haga un algoritmo que escriba el mínimo común múltiplo de dos números enteros dados por el usuario. 47. Haga un algoritmo que escriba el máximo común divisor de dos números enteros dados por el usuario. 48. Haga un algoritmo que escriba la factorización desarrollada de un número entero dado por el usuario. Ejemplo: Entrada: −1050 Salida: −1050 = −1 × 2 × 3 × 5 × 5 × 7. 49. Haga un algoritmo que escriba la factorización condensada de un número entero dado por el usuario. Ejemplo: Entrada: −1050 Salida: −1050 = −1 × 2 × 3 × 5 ∧ 2 × 7. 5 50. Haga un algoritmo que lea cuatro dígitos y escriba el número menor y mayor que se forman con ellos. Ejemplo: Entrada: 3 8 2 9. Salida: Menor: 2389, Mayor: 9832. 51. Haga un algoritmo que simplifique una fracción, el usuario ingresa el numerador y el denominador, si la fracción que ingresa es irreductible escribir el mensaje correspondiente. 52. Haga un algoritmo que escriba una fracción impropia en fracción mixta, el usuario ingresa el numerador y el denominador., si la fracción no es impropia escribir el mensaje correspondiente. 53. Haga un algoritmo que lea un numero natural n con 1 < n < 20 y escriba su equivalente en sistema binario. 54. Haga un algoritmo que lea un numero Hexadecimal y escriba su equivalente en es sistema decimal. 55. Escriba un algoritmo que determine la hora local del arribo de un vuelo que partió de una ciudad A con destino a una ciudad B. Para resolver este problema el algoritmo debe solicitar al usuario las zonas horarias de las dos ciudades, la hora local de salida de la ciudad A y la duración del vuelo. 56. Escriba un algoritmo que imprima y cuente los distintos divisores de un número natural n dado por el usuario. 57. Resuelva el siguiente problema a través del desarrollo de un algoritmo. Una institución financiera asigna cierto tipo de números a sus tarjetas de crédito. Un número de tarjeta de crédito es válido para esta compañía sí, al sumar los dígitos impares de este número, se obtiene como resultado un número divisible por 7. Si los números de tarjetas de crédito se componen de 6 dígitos y la empresa puede llegar a tener una demanda de ciento cuarenta mil tarjetas, entonces ¿Existen suficientes números válidos que puedan cubrir la demanda?. Como ejemplo, el número 321032 es un número válido puesto que al sumar los dígitos impares (3+1+3=7) se obtiene 7 y este es un número divisible por 7, otros ejemplos son 873132,773132 y 571127. 58. Cuatro números w, x, y y z se dicen sociables si se cumple que: • La suma de los divisores propios de w es igual a x. • La suma de los divisores propios de x es igual a y. • La suma de los divisores propios de y es igual a z. • La suma de los divisores propios de z es igual a w. Desarrolle un algoritmo que determine si cuatro números naturales son sociables. Pruebe su algoritmo con el grupo de números {1264460, 1547860, 1727636, 1305184}. 59. Desarrolle un algoritmo que determine si dos números ingresados por el usuario son primos consecutivos. 60. Los números de fibonacci se definen de la siguiente forma, el primero es 1, el segundo 1, el tercero es la suma de los dos anteriores, es decir 2, el cuarto nuevamente es la suma de los dos anteriores, es decir 3 y así sucesivamente, en concreto el conjunto de los primeros números de fibonacci se ve de la siguiente forma: {1, 1, 2, 3, 5, 8, 13, 21, 34, · · · }. Escriba un algoritmo que dado un número natural n, calcule la suma alternada de los primero n números de fibonacci. Ejemplo: Entrada: 8 Salida: 1-1+2-3+5-8+13-21=-12 6 8 Guía del segundo foro Esta guía comprende un conjunto de ejercicios donde se debe hacer el uso de la combinanción de los bloques estructurados. Para los ejercicios del 1 al 8 cree un algoritmo que despliegue en pantalla la figura que se muestra en función de un número entero n y un carácter c ingresado por el usuario. n representa el número de filas y c es el carácter con el que se formarán las figuras. 1. Entrada: n = 4, c = ” ∗ ”. Salida: * * * * * * * * * * 2. Entrada: n = 5, c = ” ∗ ”. Salida: * * * * * * * * * * * * * * * * * * * * * * * * * 3. Entrada: n = 7, c = ”x”. Salida: * * * * * * * * * * * * * * * * * * * * * * * * * * * * 4. Entrada: n = 4 , c = ” ∗ ” : * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * En los ejercicios del 5 al 8, se pide la variable m que representa el número de carácteres en cada línea. 5. Entrada: n = 3, c = ” ∗ ” y m = 4. Salida: * * * * * * * * * * * * 6. Entrada: n = 7 (n debe ser impar), c = ” ∗ ” y m = 5. Salida: * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 7 7. Entrada: n = 7 (n debe ser impar), c = ” ∗ ” y m = 5. Salida: * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 8. Entrada: n = 4, m = 5, c = ” ∗ ”. Salida: * * * * * * * * * * * * * * * * * * * * * * * 9. Escribir un algoritmo que presente un menú para desplegar en pantalla una de las siguientes series de números, el usuario indica la serie que desea y la cantidad de términos: (a) 0,1,1,2,3,5,8,13,... (b) 1/2, 1/4, 1/8, 1/16,... (c) 1/3,-1/6,1/9,-1/12,1/15,... 10. Escriba un algoritmo que tenga como entrada un número natural n. A continuación el algoritmo deberá imprimir todos los divisores primos de n y finalmente imprimirá el número de estos. 11. Escriba una algoritmo que pida al usuario dos enteros positivos n y m con n < m. A continuación el algorimto contará todos lo números perf ectos entre n y m incluidos ellos mismos. 12. Calcule la suma de los términos de la serie: n X 1 i!2i i=1 El usuario debe ingresar el valor de n. 13. Realice un algoritmo en el que dado n números naturales, determine y escriba qué porcentaje son pares y que porcentaje son primos. Ejemplo: Entrada: 4 5 6 2 1 -5 9 8 Salida: Pares: 50%, Primos: 25%. 14. Realice un algoritmo en el que dado un número, diga si es o no un número de Armstrong. Un número de n dígitos es un número de Armstrong si la suma de las potencias n-ésimas de los dígitos que lo componen es igual al mismo número. Entrada: 1634 Salida: Sí es un número de Amstrong. La explicación de porque es un número de Amstrong es que 14 + 64 + 34 + 44 = 1634. 15. Diseñe un algoritmo que encuentre el menor número primo ingresado por el usuario; tenga en cuenta que la lectura de números terminará con el número que el usuario ingresa. Se deben realizar verificaciones respectivas para conocer si el número es o no primo. 16. Realice un algoritmo que calcule la función que corresponda para un x ingresado por el usuario y el número de términos m de la serie que él desee evaluar. En el caso de las funciones trigonométricas, el x se encuentra en radianes. 8 (a) ex ≈ m X xn n=0 n! (b) ln(x + 1) ≈ . (f) arctan(x) ≈ n=0 m X (−1)n+1 xn n=0 (c) sin(x) ≈ (d) cos(x) ≈ n m X (−1)n x2n+1 n=0 m X n=0 (e) arcsin(x) ≈ m X (−1)n x2n+1 (2n + 1)! . |x| < 1. (g) cosh(x) ≈ . (h) sinh(x) ≈ n 2n (−1) x . (2n)! m X n=0 m X (i) sinh (x) ≈ −1 . |x| < 1. m X x2n . (2n)! n=0 n=0 (2n)!x2n+1 . |x| < 1. 4n (n!)2 (2n + 1) 2n + 1 x2n+1 . (2n + 1)! m X (−1)n (2n)!x2n+1 n=0 4n (n!)2 (2n + 1) . |x| < 1. 17. Los lenguajes ensambladores para algunos microprocesadores no tienen una operación de multiplicación. Aunque hay algoritmos sofisticados para llevar a cabo la multiplicación en estos casos, un método simple multiplica por adición repetida. En este caso la eficiencia del algoritmo puede incrementarse usando ciclos anidados. Por ejemplo, para multiplicar un número por 12, primero se suma el número 3 veces y luego suma el resultado cuatro veces. Estos solo requiere 7 adiciones en lugar de 12. Usando esta información escriba un algoritmo que multiplique 33, 47 y 83 por 1001 usando tres ciclos y luego despliegue el resultado. (Sugerencia: 1001 = 7 × 11 × 13). 18. Escriba un algoritmo que utilice bloques de repetición para resolver el siguiente problema: Suponga que se desean encontrar las parejas de enteros (x, y) tales que 2x2 + 5xy − 12y 2 = 28. Asuma para este ejercicio que |x| + |y| < 20. Determine cuales son las posibles parejas de valores que cumplen con esta condición. 19. Escriba un algoritmo para invertir los dígitos de un número entero positivo. 20. Además del promedio aritmético de un conjunto de números se puede calcular la media geométrica y la media armónica. Media geométrica de {x1 , x2 , · · · , xn }: √ n x1 x2 · · · xn . Media armónica de {x1 , x2 , · · · , xn }: n 1 1 + ··· + x1 xn Usando estas fórmulas escriba un algoritmo que continúe aceptando números hasta que se introduzca el número 999, y luego calcule y despliegue tanto la media geométrica como la armónica de los números introducidos, excepto el 999. 21. Los siguientes datos se recolectaron en un viaje frecuente en automóvil: Millas 22495 22841 23185 23400 23772 24055 24434 24804 25276 galones Tanque lleno 12.2 11.3 10.5 11.0 12.2 14.7 14.3 15.2 9 Escriba un algoritmo que acepte un valor de millas y galones y calcule las millas por galón (mpg) logradas para ese segmento del viaje. Las millas por galón se obtienen como la diferencia en millas entre llenadas del tanque divido entre el número de galones de gasolina utilizados desde que se llenó el tanque. 22. Suponga que se tiene una caja de banco con la siguiente cantidad en denominaciones de billetes: Billete 500 100 50 20 Cantidad 30 55 66 77 Billete 10 5 2 1 Cantidad 112 345 234 89 Introducir un número (entero) y desglosarlo de forma ideal en billetes de la caja descrita anteriormente. 23. Un número entero positivo n se dice atractivo, si la suma de los dígitos forma parte de la lista de números de fibonacci. Escriba una algoritmo que calcule los primeros 20 números atractivos. 24. Escriba un algoritmo que por medio de un bloque HACER-MIENTRAS lea un conjunto de números enteros. Para terminar el ciclo de repetición, tendrá que verificar si el usuario ingresa en algún momento la secuencia 3,7,0. Además al final del algortimo tendrá que imprimir la suma de los números primos ingresados. Ejemplo: Entrada: 3 11 2 12 46 3 7 0 Salida: 26 25. Un número entero n positivo se considera abundante si la suma de los divisores es mayor que 2n. Por ejemplo 12 es abundante dado que 16 = 1 + 2 + 3 + 4 + 6 > 12. Por medio de un algoritmo, encuentre los primeros 100 números abundantes. 26. Considere la siguiente lista de números: 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 , , , , , , , , , , , , , , , , , , , , ··· 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 1 Escriba un algoritmo que reciba como entrada un número entero n y a continuación imprima los primeros n elementos de la lista anterior. 27. Sea n un número entero positivo. Defina S(n) como la suma de los cuadrados de los dígitos de n. Por ejemplo S(143) = 12 + 42 + 32 = 26. A partir esta definición se puede crear una secuencia de números: n → S(n) → S(S(n)) → S(S(S(n))) · · · . Por ejemplo, los primeros 4 términos de la secuencia descrita anteriormente empezando con 143 es: 143 → 26 → 40 → 16. Escriba un algoritmo que pida al usuario un entero positivo n, a partir de este número se imprimirá la lista que se discutió antes, por medio de un bloque de repetición. El bloque de repetición se terminará cuando en la lista aparezca el número 1 o cuando el bloque supere las 100 vueltas. 28. Escriba un algoritmo que lea inicialmente una pareja de números (x, y). Luego por medio de un bloque de repetición MIENTRAS se leera en cada vuelta tres números, r y (k, l) donde r representará el radio de un círculo centrado en el punto (k, l). El ciclo de repetición MIENTRAS terminará cuando el usuario ingrese r = 0. Al final de esto, el algoritmo deberá imprimir si (x, y) esta contenido en la mayoría de los círculos proporcionados. Se entiende en este sentido por "mayoría" cuando el punto se encuentra en al menos el 60% de los círculos. p 29. Una fracción menor que 1. Se considera egipcia, si esta se puede escribir de la siguiente forma: q p 1 1 = + ··· + . q n1 nk 10 Donde los ni son todos diferentes y k ≥ 1. A continuación se muestran algunos ejemplos de fracciones egipcias: 3 1 1 = + 8 3 24 1 1 = 6 6 5 1 1 1 = + + 7 2 5 70 Si usted no había escuchado sobre las fracciones egipcias, quizas le resulte sorprendente, inicialmente, que todo fracción menor que 1 es egipcia. Escriba un algoritmo que reciba una pareja de números p enteros positivos p y q con p < q, de manera que estos dos números representen a la fracción y q posteriormente el algoritmo deberá imprimir la expansión en sumas de fracciones con numerador 1, que demuestran que en efecto toda fracción es egipcia. Para poder construir el algoritmo considere la siguiente estrategia, que por simplicidad se ejemplifi5 1 5 cará con : Primero buscamos el menor entero positivo n tal que > , en este caso n = 2. Luego 7 7 n 5 1 3 = − . Luego repetimos el proceso, se ejecuta la resta de estas dos fracciones, resultando 14 7 2 3 1 buscamos nuevamente el menor entero positivo n tal que > , en este caso n = 5, operamos 14 n 1 3 1 la diferencia, = − . Como el resulado de la diferencia es una fracción con numerador 1, 70 14 5 entonces el proceso termina y la fracción se puede expandir como: 5 1 1 1 = + + . 7 2 5 70 30. Un número entero positivo es múltiplo de 9, si la suma de sus dígitos, también lo es. Resuelva el siguiente problema usando un algoritmo que a su vez use un bloque de repetición. Utilizando exclusivamente los dígitos 2 y a se forma el siguiente número de 90 cifras: 2a22a222a2222a · · · 22 · · · 2a Si se sabe que este número es múltiplo de 9, ¿Cuáles son los posibles valores del dígito a? 31. Usando un algoritmo encuentre una lista de cinco primos direntes donde la diferencia entre cualesquiera dos términos consecutivos de la lista sea siempre seis. 32. Considere la siguiente secuencia de números: {1, 2, 4, 5, 7, 9, 10, 12, 14, 16, · · · }. Escriba un algoritmo que lea un número entero n y a continuación deberá imprimir la lista de los primeros n números de la colección descrita anteriomente. Observación: La lista de números se forma de la siguiente manera, se coloca el primer impar (1), luego se colocan los siguientes dos pares (2,4), después los tres impares siguientes (5,7,9), luego los cuatro pares siguientes al último impar que se coloco y así susecivamente. 33. Escriba un algoritmo que determine todos los enteros positivos n menores que 1000, tales que sean múltiplos de 3, terminen en 1 y que sean suma de dos cuadrados. 34. Escriba un algoritmo que determine todos los enteros positivos n menores que 400 tales que n tiene sólo 2 divisores primos distintos y el producto de sus divisores es igual a n6 . Por ejemplo, n = 12 cumple con esta condición, dado que 1728 = 126 = 1 × 2 × 3 × 4 × 6 × 12 y sólo tiene a 2 y 3 como únicos divisores primos. 11 35. Por medio de un algoritmo determine el mínimo valor de n para el cual se tiene que el promedio de los números 12 , 22 , 32 , · · · , n2 es un cuadrado perfecto. 36. Considere la siguiente lista de números: L = {1, 2, 3, 4, 5, · · · , 2n }. Escriba un algoritmo que pida al usuario el entero positivo n. A continuación el algoritmo deberá imprimir la suma de los mayores divisores impares de los elementos en L. Ejemplo: Entrada: 3 Salida: 22 37. Un número n se considera fantástico si n y 1 + 2 + 3 + · · · + n son cuadrados perfectos. Escriba un algoritmo que encuentre un número fantástico mayor que 49. 38. Escriba un algoritmo que encuentre el entero más pequeño tal que sea divisible por los números desde el 1 al 24. 39. Un número primo se dice circular cuando todas las rotaciones de sus dígitos son primos también. Por ejemplo, 197 es primo y se considera circular, puesto que 971 y 719 también son primos. Escriba un algortimo que imprima todos los primos circulares de 4 dígitos. 40. Suponga que un triángulo se forma con dos puntos P (x1 , y1 ) y Q(x2 , y2 ) y el origen O(0, 0) de manera que x1 , y1 , x2 , y2 son números enteros no negativos. Escriba un algoritmo que cuente cuantos triángulos construidos de esta manera tienen al propiedad de ser rectángulos, suponiendo que 0 ≤ x1 , y1 , x2 , y2 ≤ 20. 41. Suponga que se forman triángulos con los puntos A(a, b), B(c, d), C(e, f ) donde a, b, c, d, e, f ∈ Z. Encuentre la cantidad de triángulos diferentes formados de esta manera que contienen al origen, dado que |a|, |b|, |c|, |d|, |e|, |f | < 10. 42. Suponga que las medidas de los lados de un triángulo isósceles son l, l y b, donde b y l son enteros. Además imagine que h es la altura medida desde el vértice opuesto al lado que mide b. Se dice que un triángulo iscóceles es especial si h = b ± 1. Escriba un algoritmo que encuentre 12 triángulos isósceles especiales. 43. Suponga que se quiere evaluar un polinomio de la forma p(x) = an xn + an−1 xn−1 + · · · + a1 x + a0 en el valor x. Escriba un algoritmo que solicite el valor de x y el valor de n. Luego por medio de un ciclo PARA, lea los coeficientes del polinomio de forma creciente respecto a las potencias y a su vez vaya calculando el polinomio evaluado en x. 44. Suponga que se quiere encontrar el término independiente de la división entre p(x) = an xn + an−1 xn−1 + · · · + a1 x + a0 y ax + b. Escriba un algoritmo que solicite el valor de a, b y n. Luego por medio de un ciclo PARA, lea los coeficientes del polinomio en forma decreciente con respecto a las potencias y a su vez vaya haciendo los cálculos necesarios para encontrar el término independiente haciendo uso de la división sintética. 45. Sea p(x) = an xn + an−1 xn−1 + · · · + a1 x + a0 donde los coeficientes enteros. Existe un criterio en matemática llamado Criterio de Eisenstein que permite determinar si el polinomio p(x) no tiene raíces racionales: Suponga que existe un número primpo p que cumple con las siguientes condiciones: • p divide a a0 , a1 , a2 , · · · , an−1 . • p no divide a an . • p2 no divide a a0 . 12 Entonces el polinomio no tiene soluciones racionales. Escriba un algoritmo que solicite el valor de n y el valor de un primo p. Luego por medio de un ciclo PARA, lea los coeficientes del polinomio de forma creciente respecto a las potencias y evalue las condiciones del criterio de Eisenstein. Finalmente en el caso de que el criterio de Einsenstein se cumpla, deberá imprimir un mensaje indicando que el polinomio no tiene raíces racionales. 46. Escriba un algoritmo que imprima el triángulo de pascal en función de la profundidad n del triángulo. Por ejemplo si n = 5, entonce se debería imprimir: 1 1 1 5 1 4 1 3 10 1 1 2 3 6 10 1 4 1 5 1 Ayuda: En la fila k los elementos se puede calcular con los números 1 k! para i = 0, 1, 2, · · · , k. (k − i)!i! 47. Construir un algoritmo que permita multiplicar dos números enteros positivos empleando el método denominado multiplicación rusa. Este método permite calcular el producto M N de la siguiente manera: En pasos sucesivos se divide M por 2 (división entera) y se multiplica N por 2. Este proceso se repite hasta que M es cero. El resultado de la multiplicación deseada se obtiene acumulando aquellos valores sucesivos de N para los cuales el valor de M es impar. Ejemplo: N = 31 y M = 27 N M 31* 27 62* 13 124 6 248* 3 496* 1 992 0 Acumulado 31 31+62=93 93 93+248=341 341+496=837 Para este algoritmo también se pide que se imprima una tabla como la del ejemplo. 48. Considere la siguiente sumatoria: N X (−1)n 4 n=1 2n + 1 ≈π Escriba un algoritmo que pida al usuario un entero positivo m y despliegue una tabla donde vaya midiendo el error desde que N = 1 hasta que N = m. Ejemplo con m = 8. N 1 2 3 4 5 6 7 m =8 Suma: PN n=1 2.66 3.46 2.89 3.34 2.98 3.28 3.02 3.25 (−1)n 4 2n + 1 Error: (−1)n 4 −π n=1 2n + 1 0.475 0.325 0.246 0.198 0.166 0.142 0.125 0.111 PN Además responda la siguiente pregunta, ¿Cuál debería ser el valor más pequeño de N para que el error sea menor a 10−4 ? 13 49. Suponga que en una población hay N habitantes que están a favor de dos posibles partidos, A o B. Además suponga que r habitantes son simpatizantes del partido A y por ende N − r están con el partido B. Suponga que usted decide encuestar a n personas de esta población, evidentemente n < N . Existe un resultado en matemáticas que establece que la probabilidad de que y personas de las n encuestadas sean simpatizantes del partido A, es igual a: r N −r y n−y N n . k k! . Escriba un algoritmo que pida al usuario los valores de N , n, r, k. Donde = l l!(k − l)! Finalmente con ayuda de la fórmula descrita anteriormente, calcule la suma de las probabilidades desde y = 0 hasta y = k. Este último cálculo representaría la probabilidad de que a lo más k personas esten a favor del candidato A. 50. Considere el siguiente conjunto de números: 1 12 123 1234 12345 123456 1234567 12345678 123456789 12345678910 1234567891011 .. . 1234567891011 · · · 99100 Ahora suponga que se forma el número N concatenando los números que se ven en el triángulo anterior: N = 112123123412345 · · · 12345 · · · 99100. Escriba un algoritmo que le permita determinar si N es múltiplo de 3. Ayuda: Un número es múltiplo de 3, si la suma de sus dígitos también lo es. 51. Suponga que se quiere resolver la siguiente ecuación: arctan(ax + b) = ln(x) La siguiente secuencia de números: an+1 = an − f (an ) g(an ) tienen la propiedad de acercarse al valor de la solución de la ecuación anterior, donde f (x) = −a2 x2 + (a − 2ab)x − 1 − b2 arctan(ax + b) − ln(x) y g(x) = . Escriba un algoritmo que calcule la a2 x3 + 2abx2 + (1 + b2 )x secuencia {an } hasta que |f (an )| < e. Para esto el usuario ingresará los valores de a, b, a1 y e. Por ejemplo: Entrada: a = 2, b = −2, a1 = 2, e = 10−5 . Salida: 14 n 1 2 3 4 5 an |f (an )| 2 0.414 6.14 0.341 3.77 0.064 4.09 0.001 4.1 6.872 × 107 52. Considere la siguiente sucesión de números: 4 5 Sn = max(Sn−2 , Sn−1 − Sn−2 + 7) si n = 1, si n = 2, de otra manera. Escriba un algoritmo solicite un número entero N y a partir de este número imprima la lista de valores S1 , S2 , · · · , SN . 53. Escriba un algoritmo que pida al usuario un número entero N . A partir de esto deberá imprimir un triángulo rectángulo formado por N filas. Ejemplo: Entrada: N = 5 Salida: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 54. Escriba un algoritmo que pida al usuario un número entero N . A partir de esto deberá imprimir un triángulo rectángulo formado por N filas. Ejemplo: Entrada: N = 5 Salida: 2 4 6 8 10 12 14 16 18 22 24 26 20 28 30 55. Escriba un algoritmo que pida al usuario un número entero N . A partir de esto deberá imprimir un triángulo isósceles formado por N filas. Ejemplo: Entrada: N = 5 Salida: 2 3 4 4 5 6 5 6 7 8 1 3 2 5 4 3 7 6 5 4 9 8 7 6 5 56. Escriba un algoritmo que pida al usuario un número entero N . A partir de esto deberá imprimir un triángulo rectángulo formado por N filas. Ejemplo: Entrada: N = 5 Salida: 15 2 3 5 7 11 13 17 19 23 31 37 41 29 43 47 57. Un número entero positivo es múltiplo de 11, si la suma y resta alternada de sus dígitos, también lo es. Resuelva el siguiente problema usando un algoritmo que a su vez use un bloque de repetición. Utilizando exclusivamente los dígitos 2 y a se forma el siguiente número de 90 cifras: N = 2a22a222a2222a · · · 22 · · · 2a ¿Qué valores puede tomar el dígito a, de manera que N sea múltiplo de 11? 58. Escriba un algoritmo que utilice bloques de repetición para resolver el siguiente problema: Suponga que se desean encontrar las tripletas de enteros (x, y, z) tales que: x + y + z =3 x3 + y 3 + z 3 =3 Asuma para este ejercicio que |x| + |y| + |z| < 20. Determine cuales son los posibles tripletes de valores que cumplen con esta condición. 59. Considere las siguientes funciones reales: p N (x, y) = x2 + y 2 s(x, y) = −2x − cos(y) + y cos(x) t(x, y) = x sin(y) + sin(x) − 4y Defina las siguientes sucesiones x0 = 3, y0 = 3, xn+1 = xn + s(xn , yn )/N (s(xn , yn ), t(xn , yn )), yn+1 = yn + t(xn , yn )/N (s(xn , yn ), t(xn , yn )). Escriba un algoritmo que calcule el valor n de tal manera que: N (s(xn , yn ), t(xn , yn )) < 10−2 . Imprima además el valor de xn y yn . Para este algoritmo puede utilizar las funciones trigonométricas de PseInt. 16