PROBLEMAS DEL TEMA 5. CONTROL DE FLUJO DEL PROGRAMA

Anuncio
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
Descargar