Está en la página 1de 5

I.T.

Industrial
Fundamentos de Informtica

Ejercicios de Teora

PROBLEMAS DEL TEMA 7: Subprogramas y Modularidad

EJERCICIOS RESUELTOS

1. Escribe una funcin que calcule el factorial de un nmero, dado como parmetro. A continuacin realiza
un programa que lea por teclado un nmero entero n y muestre por pantalla los factoriales de los
nmeros de 1 a n. El programa debe usar la funcin factorial previamente definida.

#include <stdio.h>
#include <stdlib.h>
float factorial(int n); /*prototipo de funcion*/
int main( )
{ int i,n;
do
{ system("cls");
printf("Introduce un n positivo (maximo 25): ");
scanf("%d",&n);
}while (n<1 || n>25);

for(i=1; i<=n; i++)


{ printf("%d! = ",i);
printf("%.0f \n",factorial(i)); /* Llamada a la funcin */
}
system("pause");
return 0;
}

float factorial(int n) /* dado un numero n devuelve su factorial */


{ int i;
float fact=1;
for(i=1; i<=n; i++)
fact=fact*i;
return fact;
}

11/20
I.T. Industrial
Fundamentos de Informtica

Ejercicios de Teora

2. Realizar un programa que calcule el nmero e, utilizando el siguiente desarrollo en serie:

e = 1 + 1/1! + 1/2!+ + 1/10! +

El programa debe usar la funcin factorial definida en el ejercicio anterior.

#include <stdio.h>
#include <stdlib.h>
float factorial(int n);
int main()
{ int i,j,n;
float e =1;

do
{ system("cls");
printf("Clculo del n e segun la formula:\n\n");
printf("e = 1 + 1/1! + 1/2! + ... + 1/10! + ... \n\n");
printf("Introduce el n de terminos a usar (max 10):");
scanf("%d",&n);
} while (n<1 || n>10);

printf("\nFormula: e = 1");
for(i=1; i<=n-1; i++)
{ printf(" + 1/%d!",i);
e = e + 1/factorial(i);
}
printf("\n\nEl numero e vale %f \n\n",e);
system("pause");
return 0;
}

float factorial(int n)
{ int i;
float fact=1;

for(i=1; i<=n; i++)


fact=fact*i;
return(fact);
}

12/20
I.T. Industrial
Fundamentos de Informtica

Ejercicios de Teora

3. Dos nmeros 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
Hacer una funcin que determine si dos nmeros dados como parmetros son amigos o no. A
continuacin realizar un programa que muestre todas las parejas de nmeros amigos menores o iguales
que n, siendo n un nmero introducido por teclado. El programa debe usar la funcin amigo
previamente definida.
#include <stdio.h>
#include <stdlib.h>
bool amigo(int x, int y); /* prototipo de funcion */
int main()
{ int n,n1,n2;
system("cls");
printf("Introduce un numero: ");
scanf("%d",&n);

for(n1=1; n1<=n; n1++)


for(n2=1; n2<=n; n2++)
if (amigo(n1,n2))
printf("%d y %d son numeros amigos \n",n1,n2);

system("pause");
return 0;
}

/* dados dos n x y devuelve un 1 si son amigos y 0 si no lo son */


bool amigo(int x, int y)
{ int sumax, sumay, n;
sumax=1; sumay=1;
for(n=2; n<x; n++)
if (x%n==0)
sumax=sumax+n;
for(n=2; n<y; n++)
if (y%n==0)
sumay=sumay+n;
return (sumax==y && sumay==x);
}

13/20
I.T. Industrial
Fundamentos de Informtica

Ejercicios de Teora

EJERCICIOS PROPUESTOS

1. Realizar una funcin llamada ordena3 que reciba tres parmetros enteros a, b, c, y los intercambie, en
caso necesario, para que se cumpla a<=b<=c.

2. Basndose en la funcin anterior, escribir un programa que pida los 3 lados de un tringulo y a
continuacin muestre los siguientes datos:
Cuanto vale la hipotenusa,
Cuanto el cateto mayor y cuanto el cateto menor, y
Si el tringulo es equiltero, issceles o escaleno.

3. Escribe una funcin que resuelva una ecuacin de 2 grado segn la frmula

b b 2 4ac
x=
2a

segn el siguiente prototipo:

void ecuacion(int a; int b; int c; float *r1; float *r2; int *OK);

siendo a,b,c los coeficientes de la ecuacin, r1 y r2 las dos soluciones de la ecuacin.

La funcin devolver en OK un 0 para indicar que el sistema no tiene solucin y un 1 para indicar que si
tiene solucin.

4. Realizar un programa que pida por teclado los 3 coeficientes de una ecuacin de 2 grado y a
continuacin muestre en pantalla la solucin de dicha ecuacin. Si la ecuacin no tuviera solucin deber
mostrar un mensaje en pantalla advirtiendo de tal circunstancia.

El programa deber preguntarnos si deseamos hallar la solucin de otra ecuacin, en caso afirmativo
deber volver a preguntarnos los coeficientes de otra ecuacin y as sucesivamente hasta que alguna vez
digamos que no; en ese caso el programa terminar.

Para realizar el programa debemos basarnos en la funcin ecuacion implementada en el ejercicio


anterior.

14/20
I.T. Industrial
Fundamentos de Informtica

Ejercicios de Teora

5. Realizar un programa que muestre por pantalla el siguiente men:

1.- Calcular el factorial de un nmero.


2.- Calcular el n e:
3.- Hallar si dos nmeros son amigos
4.- Resolver ecuacin de 2 grado
5.- Salir del programa
El usuario podr elegir cada una de las opciones del men. Si la opcin pulsada no es ninguna de las
anteriores el programa debe mostrar un mensaje informando de tal error.

Para cada opcin el programa mostrar en pantalla la solucin y esperar a que se pulse una tecla. Una
vez pulsada volver a mostrar el men anterior.

6. Encontrar dnde estn los errores en el siguiente programa:


#include <stdio.h>
#include <stdlib.h>
void ordena(int *a, int *b) {
int c;
c = a;
if (a > b)
*a =*b;
*b = c;
}
int main(void)
{
int a=5, b=2, c;
c = invierte(a, b);
printf("El valor mas pequeo es %d", c);
printf("El valor mas grande es %d", *b);
system("pause");
return 0;
}

15/20

También podría gustarte