GUIA DE EJERCICIOS Taller de Programación Profesor : Wenceslao Palma M. 1.- Dado un número entero positivo, su crápulo es un número que se obtiene de la siguiente forma : se suman los dígitos que lo componen si el valor de la suma es menor que 10, el crápulo es el valor obtenido sino el crápulo es el crápulo de la suma de los dígitos. Ejemplo : Número Crápulo 7 7 13 4 492 6 5678 8 Escriba un algoritmo que lea un entero positivo y escriba el valor de su crápulo. 2.- Un número entero positivo se dice M-alternante si : El primer dígito es par (impar) entonces los 2 dígitos siguientes deben ser impares (pares), luego los tres siguientes dígitos deben ser pares (impares) y así sucesivamente. Por ejemplo : 122357 es un número M-alternante de orden 3. Escriba un programa que determine si un número es o no M-alternante y si lo es a que orden corresponde. 3.- El algoritmo de Newton , usado para calcular la raíz cuadrada, se basa en aproximaciones sucesivas , donde la primera aproximación de la raíz de un número N es : X1 = N/2 Xi+1 = Xi /2 + N/(2*Xi) 4.- Escriba un algoritmo que permita calcular : ex = 1 + x + x2/2! + x3/3! + x4/4! + ....... 5.- Suponga que en una variable se tiene una secuencia de ceros y unos que componen un número binario. Escriba un programa que determine su equivalente en decimal. 6.- La multiplicación rusa consiste en multiplicar sucesivamente por el multiplicando y dividir por 2 el multiplicador hasta que el multiplicador tome el valor 1. Luego, se suman todos los multiplicandos correspondientes a los multiplicadores impares. Dicha suma es el resultado del producto de los dos números. La tabla muestra el cálculo realizado para multiplicar 37 por 12, cuyo resultado final es 12 + 48 + 384 = 444. Multiplicador 37 18 9 4 2 1 Multiplicando 12 24 48 96 192 384 Multiplicador impar si No Si No No si Suma 12 60 444 Escriba un programa en C, que permita realizar dicha multiplicación.Considere el multiplicador y el multiplicando ingresados por el usuario, 7.- Un par de números m y n son llamados par amigable, si la suma de todos los divisores de m (excluyendo m ) es igual al número n y la suma de todos los divisores del número n (excluyendo n) es igual a m (m n). Por ejemplo, los numeros 220 y 284 son un par amigable porque los únicos números que dividen de forma excacta a 220 son 1,2,4,5,10,11,20,22,44,55 y 110, y 1 + 2 + 4 + 10 + 11 + 20 + 22 + 44 + 55 + 110 = 284 Los números que dividen a 284 son 1,2,4,71 y 142, y 1 + 2 + 4 + 71 + 142 = 220 Por lo tanto 220 y 284 son un par amigable. Escriba un programa en C que ingrese m y n , asegure que m es distinto de n determine si dichos números son par amigable. y 8.- Cuando la suma de los dígitos alternos de un número son iguales, ese número es exactamente divisible por once. Por ejemplo 5841 : 5+4 = 8+1 Por lo tanto el número 5841 es divisible por once. 9.- Un número se dice automórfico si su cuadrado termina en los mismos dígitos que el número original, por ejemplo 762 = 5776. Un número se dice trimórfico si su cubo termina en los mismos dígitos que el número original, por ejmplo 493 = 117649. Escriba un programa en C que determine los números automórficos y trimórficos menores que 1000. ARREGLOS UNIDIMENSIONALES 10.- Un método clásico para identificar los números primos existentes en una secuencia de números que va desde 2 a N es la llamada Criba de Eratóstenes. El algoritmo usado para este propósito va marcando (eliminando) todos los mútliplos de 2, 3, 4, 5 y así sucesivamente hasta que se encuentre el primer número no marcado que es mayor que la raíz cuadrada de N. Ejemplo : suponga una secuencia de números desde 2 a 20. a) Se toma el número 2, dado que es el primer número no marcado. b) Marcar todos los múltiplos de 2 a partir de 22 . c) Se toma al 3, dado que es el siguiente número no marcado. d) Marcar todos los múltiplos de 3 a partir de 32. e) Se toma el número 5 como el siguiente número. Pero 52 es mayor que 20. Entonces el algoritmo aquí se detiene y todos los números no marcados son los números primos. Gráficamente : (E significa eliminado (marcado) ) a) 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 3 E 5 E 7 E 9 E 11 E 13 E 15 E 17 E 19 E 3 E 5 E 7 E 9 E 11 E 13 E 15 E 17 E 19 E 3 E 5 E 7 E E E 11 E 13 E E E 17 E 19 E 3 E 5 E 7 E E E 11 E 13 E E E 17 E 19 E b) 2 c) 2 d) 2 e) 2 Escriba un algoritmo que permita solucionar el problema, para una secuencia que va desde 2 hasta cualquier N. 11.- Se tiene dos cadenas (arreglos de caracteres): A y SEPARADORES, cuyos contenidos son ingresados desde teclado. El programa a escribir debe ser tal que si : a.- La cadena A tiene el contenido : “sin embargo, es la dinámica autopoiética la responsable de permitir la fractura en un plano permitido . . . fenómeno muy particular en.....” b.- Y los SEPARADORES son : “, . ” Debe salir por pantalla: (1) sin embargo (2) es la dinámica autopoiética la responsable de permitir la fractura en un plano permitido (3) fenómeno muy particular en 12.- Dados 2 conjuntos A y B, que solo poseen números enteros postivos, escriba un programa en C que determine: - A unión B - A inter B - A menos B - B menos A Nota : Almacene los conjuntos en arreglos unidimensionales de enteros y asegure que los elementos de los conjuntos son enteros positivos. 13.- Dado un arreglo llamado PROM, mantiene los promedios ( valores reales), de un curso que posee N alumnos, escriba un programa en C que entregue : - El promedio de las notas - El mayor y el menor promedio - La cantidad de promedios en [4.5 - 6.0] 14.- Se tiene un arreglo de tamaño 50 que posee las respuestas correctas de una prueba de alternativas, escriba un programa en C que : - Lea las respuestas de una determinada prueba. - Muestre el número de preguntas correctas y erradas. - Obtenga la nota final sabiendo que : cada respuesta errada resta una respuesta buena y que cada respuesta buena vale 2 ptos. 15.- Dado un mensaje se debe calcular su costo para enviarlo por telégrafo. Para esto se sabe que las letras cuestan, cada una, $10. Lo caracteres especiales que no sean letras cuestan $30 y los dígitos tienen un valor de $20 cada uno. Los espacios no tienen valor. Restricciones : - El mensaje es una cadena - Las letras ñ,á,é,í,ó,ú se consideran caracteres especiales. Un ejemplo de ejecución del programa es : Entrada : Feliz cumpleaños Salida : Valor del mensaje : $ 170 16.- Escriba un algoritmo que transforme 2 números enteros positivos a su equivalente en binario, los cuales deberán estar almacenados e dos arreglos. Posteriormente realice las operaciones lógicas AND y OR entre ellos y almacene los resultados en arreglos. 17.- Suponga existen dos arreglos A y B de tamaño M y N respectivamente, los cuales poseen números enteros positivos ordenados en forma ascendente. Escriba un algoritmo que permita mezclar A y B en un tercer arreglo con sus elementos ordenados en forma ascendente y sin repetición.Ejemplo : A 1 4 6 7 B 2 3 4 6 C 1 2 3 4 6 7 Considere que A y B no tienen elementos repetidos. 18.- Realice el ruteo de los siguientes programas en C : main ( ) { int a = 5, b = 6,c = 11; main ( ){ int a = 5, b = 6; p (a,b,&c); printf(“%d %d %d”, a, b,c); } void p (int x, int y, int *z) { *z = 2 * y + *z; x = *z +y; printf(“%d %d %d”, x, y, *z); } p(&a,b); printf(“%d %d”,a,b); } void p (int *b, int a){ int c; c = *b + a; printf (“%d %d %d”, a,*b,c); } Para cada programa haga una tabla con todas las variables para mostrar el valor que éstas van tomando e indique claramente los resultados entregados en pantalla 19.- Realice dos funciones que permitan hallar el valor de mediante : 4 2 4 4 6 6 8 3 3 5 5 7 7 (a) una función considera que la precisión del calculo depende del imite superior de la multiplicatoria. Es decir , se consideran los n primeros términos de la serie donde n es un parámetro de la función. (b) la otra función considera que la precisión del cálculo depende de la diferencia entre dos términos consecutivos del serie : si ésta es menor que el parámetro de la función se detiene el cálculo.