Fundamentos de Informática Ejercicios Tema 5 PROBLEMAS DEL TEMA 5. CONTROL DE FLUJO DEL PROGRAMA EJERCICIOS RESUELTOS 1. Escribir un programa que calcule el factorial de un número entero n dado por teclado. Dicho número deberá ser mayor que cero y menor o igual a 25. #include <stdio.h> #include <stdlib.h> int main() { int i,n; float factorial; do /* do {...} while se repite mientras el nº introducido sea < 1 { system(“cls”); printf("Introduce un nº positivo (maximo 25): "); scanf("%d",&n); } while (n<1 || n>25); o > 25 */ factorial=1; for(i=1; i<=n; i++) factorial=factorial*i; printf("%d! = %.0f \n",n,factorial); system(“pause”); return 0; // %.0f -> float con 0 cifras decimales } Departamento de Ingeniería Electrónica, de Sistemas Informáticos y Automática 1/1 Fundamentos de Informática Ejercicios Tema 5 2. Realizar un programa que calcule el m.c.d y el m.c.m. de dos números cualesquiera introducidos por teclado. /* para hallar el mcd la estrategia ha seguir sera probar si el nº mas pequeño de los dos introducidos por teclado es divisible por ambos nº, si no es asi ir probando con nº una unidad mas pequeños y asi hasta hallar un nº divible por ambos, que en el peor de los casos sera el 1. Para hallar el mcm la estrategia sera similar solo que empezaremos por el numero mayor, e iremos probando con nº una unidad mayores hasta que los dos números introducidos por teclado sean divisibles por dicho nº */ #include <stdio.h> #include <stdlib.h> int main() { int n1,n2,mcd,mcm; system(“cls”); printf("Introduce el primer numero: "); scanf("%d",&n1); printf("Introduce el segundo numero: "); scanf("%d",&n2); if (n1<n2) { mcd=n1; mcm=n2; } else { mcd=n2; mcm=n1; } /* calculo del mcd */ /* mientras no sea divisible de ambos decrementar el mcd */ while (n1 % mcd != 0 || n2 % mcd != 0) mcd=mcd-1; /* calculo del mcm */ /* mientras no sea multiplo de ambos incrementar el mcm */ while (mcm % n1 != 0 || mcm % n2 != 0) mcm=mcm+1; printf("El mcd de %d y %d es %d \n",n1,n2,mcd); printf("El mcm de %d y %d es %d \n",n1,n2,mcm); system(“pause”); return 0; } Departamento de Ingeniería Electrónica, de Sistemas Informáticos y Automática 2/2 Fundamentos de Informática 3. Ejercicios Tema 5 Dos números son amigos, si cada uno de ellos es igual a la suma de los divisores del otro. Por ejemplo, 220 y 284 son amigos, ya que: Suma de divisores de 284: 1 + 2 + 4 + 71 + 142 = 220 Suma de divisores de 220: 1 + 2 + 4 + 5 + 10 + 11 + 20 + 22 + 44 + 55 + 110 = 284 Realizar un programa que determine si dos números dados por teclado son amigos o no. #include <stdio.h> #include <stdlib.h> int main() { int n1,n2,suma1,suma2,i,j; system(“cls”); printf("Introduce el primer numero: "); scanf("%d",&n1); printf("Introduce el segundo numero: "); scanf("%d",&n2); /* cálculo de los divisores de n1 y de su suma */ suma1=1; printf("\nSuma de divisores de %d = 1", n1); for(i=2; i<n1; i++) if (n1%i==0) /* es divisible */ { printf("+%d",i); suma1=suma1+i; } printf(" = %d \n",suma1); /* calculo de los divisores de n2 y de su suma */ suma2=1; printf("\nSuma de divisores de %d = 1", n2); for (i=2;i<n2;i++) if (n2%i==0) /* es divisible */ { printf("+%d",i); suma2=suma2+i; } printf(" = %d \n",suma2); if (suma1==n2 && suma2==n1) printf("\n%d y %d son numeros amigos",n1,n2); else printf("\n%d y %d no son numeros amigos",n1,n2); system(“pause”); return 0; } Departamento de Ingeniería Electrónica, de Sistemas Informáticos y Automática 3/3 Fundamentos de Informática Ejercicios Tema 5 EJERCICIOS PROPUESTOS Ejercicios con estructuras de selección 1. 2. Implementar un algoritmo que calcule la raíz cuadrada de un número y escriba su resultado o un mensaje de error en el caso de no existir solución real. Realizar un programa que determine si un número es par. 3. Implementar un algoritmo que averigüe si dados dos números introducidos por teclado, uno es divisor de otro. 4. Determinar el precio de un billete de ida y vuelta en avión, conociendo la distancia a recorrer y sabiendo que si el número de días de estancia es superior a 7 y la distancia superior a 800km, o bien la persona es mayor de 55 años, el billete tiene una reducción del 25%. El precio por kilómetro es de 0.50€. 5. Diseñar un programa en el que a partir de una fecha introducida por teclado con el formato DÍA, MES, AÑO, se obtenga la fecha del día siguiente. Al realizar la implementación deberemos tener en cuenta la característica peculiar del mes de febrero cuando el año es bisiesto (divisible entre 4). Supondremos que la fecha es introducida correctamente por parte del usuario. 6. Diseñar un programa que pida una fecha en formato numérico DÍA, MES, AÑO, y la escriba con el siguiente formato “Huelva a, dd de mm de aaaa”, donde dd y aaaa son números y mm es el nombre del mes. 7. Sabiendo que el día 1 de Marzo de 2003 fue sábado, realizar un programa que pida el guarismo de un día de dicho mes, y determine a qué día correspondió. Por ejemplo, si el usuario introduce el día 19, el programa deberá contestar que el día 19 fue miércoles. 8. Escribir un programa que lea un número y deduzca si está entre 10 y 100, ambos inclusive. 9. Un capital C está situado a un tipo de interés I, realizar un programa que determine si el capital, al término de 2 años, se habrá doblado o bien será mayor o menor del inicial. La fórmula que determina el capital que se obtiene pasados 2 años es la siguiente: CapitalFinal = CapitalInicial ∗ (1 + Interes ) 2 10. Realizar un programa que le pida al usuario dos números y qué operación matemática (suma o resta) quiere realizar con ellos. Si el usuario pulsa ‘+’ o ‘S’ se realizará la suma, si Departamento de Ingeniería Electrónica, de Sistemas Informáticos y Automática 4/4 Fundamentos de Informática Ejercicios Tema 5 pulsa ‘-‘ o ‘R’ se realizará la resta, y cualquier otra pulsación será considerada como una operación errónea, mostrándose el correspondiente mensaje de error. Ejercicios con estructuras de repetición 11. Implementar un algoritmo que le pida al usuario una cantidad T de números enteros y muestre por pantalla la suma de todos ellos y su media. 12. Realizar un programa que pida un número por teclado, y muestre por pantalla su tabla de multiplicar. 13. Realizar un programa que escriba los cuadrados de los 100 primeros números enteros. Ejercicios con estructuras de selección y repetición 14. Se desea realizar una estadística de las notas de los alumnos de un colegio, de modo que el programa que implementemos indique: a) Cuántos han suspendido. b) Cuántos han aprobado c) Cuántos han obtenido notable. d) Cuántos han sacado sobresaliente. La primera de las actividades a realizar por el programa será preguntar al usuario de cuántos alumnos se desea realizar dicha estadística. 15. Escribir los cuadrados de los 100 primeros números enteros divisibles entre 3. 16. Realizar un programa que muestre por pantalla la suma de los 100 primeros números enteros, exceptuando de dicha suma aquellos números que sean primos. 17. Implementar un algoritmo capaz de calcular xn, donde x puede ser cualquier número entero distinto de 0, y n puede ser cualquier número entero positivo, negativo o nulo. Departamento de Ingeniería Electrónica, de Sistemas Informáticos y Automática 5/5