1
« en: Viernes 8 de Abril de 2005, 23:06 »
Ejercicio que debe ser resuelto utilizando los esquemas de composición de acciones secuencial, condicional e iterativo.
Las reglas de divisibilidad permiten conocer si un nº es divisible por otro sin necesidad de realizar la división. Las reglas de divisibilidad de números pequeños más conocidas son las siguientes:
Divisibilidad por 3: un nº es divisible por 3 si la suma de todos los dígitos que lo componen es divisible por 3.
Divisibilidad por 4: un nº es divisible por 4 si sus dos últimos dígitos son a su vez divisibles por 4.
Divisibilidad por 5: un nº es divisible por 5 si su último dígito es divisible por 5.
Divisibilidad por 7: para averiguar si un nº es divisible por 7 se sigue el proceso siguiente: hallamos un nuevo nº tomando el último dígito del original multiplicado por dos y substrayéndolo del resto del nº original. Si este nuevo nº es mayor que 10 volveremos a realizar las operaciones anteriores sobre el nuevo nº hasta que nos encontremos uno estrictamente menor que 10. Si éste último nº es igual a 7 ó 0, el nº de partida es divisible por 7.
Divisibilidad por 8: un nº es divisible por 8 si sus tres últimos dígitos son divisibles por 8.
Divisibilidad por 9: un nº es divisible por 9 si la suma de todos sus dígitos es divisible por 9.
Divisibilidad por 10: un nº es divisible por 10 si termina en 0.
Divisibilidad por 11: un nº es divisible por 11 si la diferencia entre la suma de los dígitos que ocupan lugar par y la suma de los dígitos que ocupan lugar impar es 0 o divisible por 11.
El ejercicio propuesto consiste en crear un programa en Pascal que pida por teclado un nº positivo mayor que 0 y un divisor de los mencionados anteriormente. Utilizando únicamente las reglas de divisibilidad, el programa debe ser capaz de determinar si dicho nº es divisible por el divisor introducido por pantalla y comunicarlo al usuario. El programa deberá continuar pidiendo divisores hasta que el usuario decida terminar el programa. Si se introduce un divisor que no está en la lista anterior, se le indicará al usuario que no es posible hallar la divisibilidad para ese nº.
Todas las entradas de teclado se validarán convenientemente.
En ciertas partes del programa será necesaria la utilización de la función abs. Únicamente está permitida la utilización de las funciones mod y div con el nº 10 (no se puede hacer n div 3, n div 8, sólo está permitido n div 10).