You are on page 1of 18

Ejercicios de prcticas de Fundamentos de Informtica.

ELAI-UPM
Titulo: Suma de N primeros nmeros
Enunciado
Realizar un programa que pida un nmero N de tipo entero por teclado. Se usar una
funcin para calcular el valor de la suma de los N primeros nmeros enteros, usando un
parmetro de tipo entero para indicar el valor de N, y retornar la suma. El programa
principal usar la funcin para obtener el resultado y mostrarlo por pantalla. Si el
nmero es negativo, no se realiza la llamada a la funcin, y se muestra por pantalla "El
nmero es negativo". La suma de los nmeros se har de forma algortmica con un
bucle for.
Ejemplo de ejecucin
Introduzca n: -3
El numero es negativo.


Introduzca n: 5
La suma de los 5 primeros numeros es: 15

Solucin o soluciones
#include <stdio.h>

int suma_nprimeros(int n)
{
int i,suma=0;
for(i=1;i<=n;i++)
suma += i;
return suma;
}

void main()
{
int n,suma;

printf("Introduzca n:");
scanf("%d",&n);
if(n<0)
printf("El numero es negativo.\n");
else
{
suma=suma_nprimeros(n);
printf("La suma de los %d primeros numeros es: %d.\n",n,suma);
}
}





Ejercicios de prcticas de Fundamentos de Informtica. ELAI-UPM
Titulo: Tabla de valores de una funcin
Enunciado
Programar una funcin que admita como parmetros 2 valores enteros a y b. La
funcin calcular la expresin ab-a-b y retornar el valor resultante.
La funcin principal debe pedir un nmero N entero al usuario, y mostrar por pantalla el
resultado de aplicar la funcin a varios valores. Para el valor a se emplearn los valores
del 0 al 10, y para el valor b se usar el nmero N que proporcion el usuario. Se
pondr cada resultado en una lnea, indicando el valor de a, y el valor resultante de la
funcin, separados por " --> "
Ejemplo de ejecucin
Introduzca n: 3
0 --> -3
1 --> -1
2 --> 1
3 --> 3
4 --> 5
5 --> 7
6 --> 9
7 --> 11
8 --> 13
9 --> 15
10 --> 17

Solucin o soluciones
#include <stdio.h>

int funcion(int a,int b)
{
return (a*b-a-b);
}

void main()
{
int i,n,valor;

printf("Introduzca n:");
scanf("%d",&n);
for(i=0;i<=10;i++)
{
valor = funcion(i,n);
printf("%d --> %d\n", i, valor);
}
}



Ejercicios de prcticas de Fundamentos de Informtica. ELAI-UPM
Titulo: Calcular IVA
Enunciado
Realizar un programa para calcular el IVA sobre un precio. El programa principal debe
pedir un precio al usuario (de tipo float), y mostrar el precio total con el IVA incluido
(se considera el caso del 16%). El programa se repite en bucle hasta que el usuario
introduce un precio negativo, en ese caso el programa termina.
Para calcular el total, se pide tambin programar una funcin "precio_con_iva"
que admite 2 parmetros de tipo float: el precio que introduce el usuario, y el IVA como
porcentaje (16% ser 16). La funcin devolver el precio con el IVA incluido. El
programa principal usar esta funcin para calcular el total.

Ejemplo de ejecucin
Introduzca n: 200
Total: 232.000000
Introduzca n: 17
Total: 17.720000
Introduzca n: -1

Solucin o soluciones
#include <stdio.h>

float precio_con_iva(float precio, float iva_perct)
{
float iva;
iva=precio*(iva_perct/100.0);
return (precio+iva);
}

void main()
{
float precio=0.0;
float total;

while(1)
{
printf("Introduzca precio: ");
scanf("%f",&precio);
if(precio < 0.0 )
return;
total=precio_con_iva(precio,16);
printf("Total: %f \n", total);

}
}


Ejercicios de prcticas de Fundamentos de Informtica. ELAI-UPM
Titulo: Conversin de temperaturas
Enunciado
Realizar un programa para realizar la conversin de temperaturas. El programa pide al
usuario que introduzca un valor y una letra, en la misma lnea (ver ejemplo, se
recomienda usar scanf). El valor ser de tipo float. La letra indica la escala en la
que se introduce esa temperatura. Si la letra es 'C', la temperatura se convertir de
grados centgrados a Fahrenheit. Si la letra es 'F', la temperatura se convertir de grados
Fahrenheit a grados Centgrados. El programa se repetir hasta que el usuario
introduzca como letra una 'Z'. Si el usuario introduce una letra distinta a las
mencionadas, lo indicar con un mensaje de error.
Se usarn 2 funciones cent_fahr y fahr_cent, para convertir de una unidad a
otra. Estas funciones aceptarn un parmetro (la temperatura en una escala) y retornarn
el valor en la otra escala. (La relacin de escalas corresponde a C= (F-32) / 1.8 )
Ejemplo de ejecucin
Introduzca temperatura y letra: 100 C
Temperatura: 212.000000 F
Introduzca temperatura y letra: 23 F
Total: -5.000000 C
Introduzca temperatura y letra: 199 j
Error , letra no valida
Introduzca temperatura y letra: 199 Z
Fin
Solucin o soluciones
#include <stdio.h>

float cent_fahr(float cent){ return ((cent*1.8)+32); }
float fahr_cent(float fahr){ return ((fahr-32)/1.8); }

void main()
{
float temper;
char escala;
while(1) {
printf("Introduzca temperatura y letra: ");
scanf("%f %c",&temper,&escala);
switch(escala)
{
case 'Z': printf("Fin\n");
return;
case 'F': printf("Temperatura: %f C\n",fahr_cent(temper));
break;
case 'C': printf("Temperatura: %f F\n",cent_fahr(temper));
break;
default: printf("Error, letra no valida\n");
}
}
}
Ejercicios de prcticas de Fundamentos de Informtica. ELAI-UPM
Titulo: Mximo de 3
Enunciado
Programar una funcin maximo3 para calcular el mximo de tres valores a , b y c de
tipo entero, que se admiten como parmetros y se retorna el valor del mayor. Esta
funcin usar a su vez a otra funcin maximo2 (que tambin debe programarse) que
calcula el mximo entre 2 valores a y b, que se pasan como parmetros a la funcin.
El programa principal pedir al usuario 2 valores, y usar la funcin maximo3 para
calcular el mayor entre 0 y esos dos valores.
Ejemplo de ejecucin
Introduzca 2 numeros: 2 5
El mayor es: 5


Introduzca 2 numeros: -2 -7
El mayor es: 0

Solucin o soluciones
#include <stdio.h>

int maximo2(int a,int b)
{
int mayor;
if(a>=b)
mayor=a;
else
mayor=b;
return mayor;
}

int maximo3(int a,int b,int c)
{
int mayor;
mayor=maximo2(a,maximo2(b,c));
return mayor;
}

void main()
{
int n1,n2, maximo;

printf("Introduzca 2 numeros:");
scanf("%d %d" ,&n1,&n2);
maximo=maximo3(0,n1,n2);
printf("El mayor es: %d\n",maximo);
}

Ejercicios de prcticas de Fundamentos de Informtica. ELAI-UPM
Titulo: Lneas de asteriscos con funcin
Enunciado
Programar una funcin que se encarga de pedir un valor entero por teclado al usuario. Si
el valor es negativo o 0, vuelve a pedirlo. Cuando el valor es mayor que cero la funcin
retorna ese valor.
Programar una funcin que muestra una lnea de asteriscos '*' por pantalla. La funcin
admitir un parmetro que ser el nmero de asteriscos. La lnea se finalizar con un
carcter de fin de lnea.
En el programa principal, usar las funciones anteriores para: pedir un nmero entero y
mostrar varias lneas de asteriscos, de forma que la primera lnea tendr un asterisco, e
ir sumando un asterisco ms en cada lnea hasta alcanzar el nmero introducido por el
usuario.
Ejemplo de ejecucin
Introduzca un numero: -2
Introduzca un numero: 0
Introduzca un numero: 4
*
**
***
****
Solucin o soluciones
#include <stdio.h>

int entrada()
{
int val=-1;
while(val<=0) {
printf("Introduzca un numero: ");
scanf("%d",&val);
}
return val;
}

void asteriscos(int num)
{
int i;
for(i=1;i<=num;i++)
printf("*");
printf("\n");
}

void main()
{
int i,num;

num=entrada();
for(i=1;i<=num;i++)
asteriscos(i);
}



Ejercicios de prcticas de Fundamentos de Informtica. ELAI-UPM
Titulo: Calculo de los trminos impares de una serie
Enunciado
Calcular los n primeros trminos impares de la serie:
10
2 +
=
i
a
i
con n i ,....., 1 = a
travs de una funcin con el siguiente prototipo, siendo n un nmero entero que se
solicita al usuario desde el main() tantas veces como sea necesario, hasta que el
usuario teclee un numero mayor que cero.

float TerminoN (int);
Ejemplo de ejecucin
Cuandos terminos quieres calcular? -4
Cuandos terminos quieres calcular? 0
Cuandos terminos quieres calcular? 3
El termino 1 es 0.300000
El termino 3 es 0.500000
El termino 5 es 0.700000
Solucin o soluciones
#include <stdio.h>
float TerminoN (int);

void main()
{
int n,i;
float term;

do
{
printf("Cuandos terminos quieres calcular? ");
scanf("%d", &n);
}
while(n<=0);


for(i=1;i<n*2 ;i+=2)
{
term=TerminoN(i);
printf("El termino %d es %f \n",i,term);
}
}

float TerminoN (int n)
{
return (float)(n+2)/10; //tambien return (n+2)/10.0f;
}


Ejercicios de prcticas de Fundamentos de Informtica. ELAI-UPM
Titulo: Calculo del trmino n-simo
Enunciado
Calculo el trmino n-simo de la serie:
!
0
n
i
a
n
i
n

=
= a travs de dos funciones con el
siguiente prototipo. Para ello el main() solicitar un numero al usuario, realizar el
calculo mediante las funciones e imprimir por pantalla el resultado final.
NOTA: El clculo del sumatorio tiene que hacerse obligatoriamente de forma
algortmica mediante un bucle for.

int SumoN (int);
int FactN (int);
Ejemplo de ejecucin
Introduce n: 5
El termino n-esimo es: 0.125
Solucin o soluciones
#include <stdio.h>

int SumoN(int);
int FactN(int);

void main()
{
int n, a, b;

printf("Introduce n: ");
scanf("%d",&n);

a= SumoN(n);
b= FactN(n);
printf("El termino n-esimo es: %f", (float) a/b);
}

int SumoN(int a)
{
int i, resu=0;

for(i=0; i<=a;i++)
resu+=i;
return resu;
}

int FactN(int a)
{
int i, resu=1;

for(i=1; i<=a; i++)
resu*=i;
return resu;
}


Ejercicios de prcticas de Fundamentos de Informtica. ELAI-UPM
Titulo: Distancia entre dos puntos
Enunciado
Realizar un programa para calcular la distancia entre dos puntos introducidos por el
usuario a travs de una funcin con el siguiente prototipo:

float dist (float x1, float y1, float x2, float y2);
Ejemplo de ejecucin
Introduce el primer punto: 1 0
Introduce el segundo punto: 0 1
Solucin o soluciones
#include <stdio.h>
#include <math.h>

float dist (float, float, float, float);

void main()
{
float resu, x1,x2,y1,y2;
printf("Introduce el primer punto: ");
scanf("%f %f",&x1,&y1);
printf("Introduce el segundo punto: ");
scanf("%f %f",&x2,&y2);

resu=dist(x1,x2,y1,y2);

printf("La distancia es: %f", resu);

}
float dist(float a,float b,float c,float d)
{
return sqrt((a-b)*(a-b) + (c-d)*(c-d));
}

Ejercicios de prcticas de Fundamentos de Informtica. ELAI-UPM

Titulo: Sumatorio desde a hasta b
Enunciado
Realizar una funcin para retorne el valor de la siguiente suma ( )
b
i a
s n i
=
=

donde a , b
y n son nmeros introducidos por el usuario.

int Sumatorio (int n, int a, int b);
Ejemplo de ejecucin
Introduce el numero: 3
Introduce a y b: 2 7
la suma es: 81
Solucin o soluciones
#include <stdio.h>

int Sumatorio (int n, int a, int b);

void main()
{
int a, b,num;

printf("Introduce el numero: ");
scanf("%d", &num);
printf("Introduce a y b: ");
scanf("%d %d", &a, &b);

printf("la suma es: %d \n",Sumatorio (num, a, b));
}

int Sumatorio(int n, int a, int b)
{
int i, sum=0;

for(i=a; i<=b; i++)
sum+=(n*i);

return sum;
}








Ejercicios de prcticas de Fundamentos de Informtica. ELAI-UPM
Ttulo: Suma de una serie con una funcin
Enunciado
Realizar un programa que calcule la suma de la siguiente serie utilizando una funcin:

2 2 2 2
1
2
1
3
1
2
1
1
1 1
n
...
i
suma
n
i
+ + + + = =

=


A la funcin, denominada SumaSerie, se le pasar como argumento un valor de n
ledo desde el teclado y devolver la suma como valor de retorno. Finalmente, el valor
de la suma ser impreso en la pantalla desde la funcin main().

Nota: Se supondr que el usuario introduce siempre un valor de n mayor o igual que 1.
Ejemplo de ejecucin
Introduzca n: 100
La suma vale 1.634984
Solucin o soluciones
#include <stdio.h>

float SumaSerie (int numero);

void main()
{
int n;
float s;

printf("Introduzca n: ");
scanf("%d", &n);

s=SumaSerie(n);

printf("La suma vale %f\n", s);
}

float SumaSerie (int numero)
{
int i;
float suma=0;

for(i=1;i<=numero;i++)
suma+=1.0f/(i*i);

return suma;
}



Ejercicios de prcticas de Fundamentos de Informtica. ELAI-UPM
Ttulo: Clculo de a
b
Enunciado
Realizar un programa que calcule con una funcin, llamada potencia, el valor de a
b
,
donde a y b son dos nmeros enteros introducidos desde el teclado tal que a>0 y b>=0
(se supondr que el usuario introduce dos nmeros que cumplen estas condiciones).

Nota: no se pueden utilizar funciones de la librera de matemticas. El clculo de a
b
lo
realizar la funcin teniendo en cuenta que a
b
=aaa.a (b veces).
Ejemplos de ejecucin

Introduzca a y b: 2 0
2 elevado a 0 vale 1

Introduzca a y b: 2 4
2 elevado a 4 vale 16
Solucin o soluciones
#include <stdio.h>

int potencia (int base, int exponente);

void main()
{
int a, b, p;

printf("Introduzca a y b: ");
scanf("%d %d", &a, &b);

p=potencia(a, b);

printf("%d elevado a %d vale %d\n", a, b, p);
}

int potencia (int base, int exponente)
{
int i, aux=1;

for(i=1;i<=exponente;i++)
aux*=base;

return aux;
}





Ejercicios de prcticas de Fundamentos de Informtica. ELAI-UPM
Ttulo: Aproximacin del nmero e
Enunciado

Realizar un programa que calcule una aproximacin del nmero e obtenida al sumar la
siguiente serie:

! 10
1
...
! 3
1
! 2
1
! 1
1
1
!
1
10
0
+ + + + + =

= n
n
e


La suma de la serie se realizar dentro la funcin main(), pero har uso de una funcin
llamada factorial, a la cul se le pasa como argumento el valor de n y devuelve el valor
de n!. La funcin ser llamada cada vez que haya que calcular el factorial de n.
Ejemplo de ejecucin
El numero e vale aproximadamente 2.718282
Solucin o soluciones
#include <stdio.h>

int factorial (int n);

void main()
{
int i;
float suma=0.0f;


for(i=0;i<=10;i++)
suma+=(float)1/factorial(i);

printf("El numero e vale aproximadamente %f\n", suma);
}

int factorial (int n)
{
int i, aux=1;

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

return aux;
}




Ejercicios de prcticas de Fundamentos de Informtica. ELAI-UPM
Ttulo: Mnimo de tres nmeros enteros
Enunciado
Realizar un programa que calcule el mnimo de tres nmeros enteros, a, b y c,
introducidos desde el teclado utilizando una funcin llamada minimo a la cul se le
pasan como argumentos los tres nmeros y devuelve el mnimo de ellos, que ser
impreso desde la funcin main().
Ejemplo de ejecucin
Introduzca los nmeros: 12 -3 27
El minimo de ellos es 3
Solucin o soluciones
#include <stdio.h>

int minimo (int a, int b, int c);

void main()
{
int a, b, c, min;

printf("Introduzca los numeros: ");
scanf("%d %d %d", &a, &b, &c);

min=minimo(a, b, c);

printf("El minimo de ellos es %d\n", min);
}

int minimo (int a, int b, int c)
{
if (a>b) //El mnimo es b o c
if(b<c)
return b;
else
return c;
else //El mnimo es a o c
if(a<c)
return a;
else
return b;
}
//Tambien podria ser:
int minimo (int a, int b, int c)
{
int min=a;
if(b<min)
min=b;
if(c<min)
min=c;
return min;
}



Ejercicios de prcticas de Fundamentos de Informtica. ELAI-UPM
Ttulo: Cuntos mltiplos de 7 hay entre n y m?
Enunciado
Hacer un programa que determine cuntos mltiplos de 7 hay entre los nmeros enteros
n y m, ambos inclusive. Los valores n y m sern introducidos desde el teclado (se
supondr que ambos nmeros son positivos y que m es mayor o igual que n).
El nmero de mltiplos ser calculado con una funcin a la cul se le pasan como
argumentos los valores de n y m. El valor calculado ser devuelto a la funcin main()
e impreso en la pantalla.
Ejemplo de ejecucin
Introduzca n y m: 10 25
Hay 2 multiplos de 7 entre 10 y 25
Solucin o soluciones
#include <stdio.h>

int multiplosde7 (int inferior, int superior);

void main ()
{
int n, m, nmul;

printf("Introduzca n y m: ");
scanf("%d %d", &n, &m);

nmul=multiplosde7(n, m);

printf("Hay %d multiplos de 7 entre %d y %d\n", nmul, n, m);
}

int multiplosde7 (int inferior, int superior)
{
int i, contador=0;

for(i=inferior; i<=superior; i++)
if(i%7==0)
contador++;

return contador;
}












Ejercicios de prcticas de Fundamentos de Informtica. ELAI-UPM
Ttulo: Mximo comn divisor
Enunciado
Hacer un programa que determine el mximo comn divisor de dos nmeros enteros a
y b que se solicitan al usuario por teclado desde el main(). Dichos nmeros sern
pasados a una funcin, que retorna el MCD de ambos, y el main() se encarga de sacar
el resultado por pantalla. Si uno de los dos nmeros es negativo, se muestra un mensaje
de error y no se invoca la funcin:
Ejemplo de ejecucin
Introduzca a y b: 18 30
El MCD es: 6
Press any key to continue

Introduzca a y b: 2 -18
Error en los datos
Press any key to continue
Solucin o soluciones
#include <stdio.h>

int MCD( int a, int b);

void main()
{
int n1,n2,min;

printf("Introduzca a y b: ");
scanf("%d %d",&n1,&n2);

if(n1 <0 || n2 <0)
{
printf("Error en los datos\n");
return;
}

min=MCD(n1,n2);
printf("El MCD es: %d\n",min);
}

int MCD( int a, int b)
{
int i,mcd=1;
for(i=2;i<=a;i++)
{
if(a%i==0 && b%i==0)
mcd=i;
}
return mcd;
}


Ejercicios de prcticas de Fundamentos de Informtica. ELAI-UPM
Ttulo: Numero combinatorio
Enunciado
Hacer un programa que determine el numero combinatorio a sobre b, siendo a y b
nmeros enteros que se piden al usuario por teclado desde el main(). Dichos
nmeros sern pasados a una funcin como parmetros, retornando dicha funcin el
nmero combinatorio que tiene como expresin:
!
( )! !
a
a
c
b a b b

= =




Y el main() es el encargado de mostrar el resultado por pantalla.
El prototipo de las funciones necesarias es:
int factorial (int n);
int combinatorio (int a, int b);
Ejemplo de ejecucin
Introduzca a y b:6 2
Resultado: 15
Solucin o soluciones
#include <stdio.h>

int factorial (int n);
int combinatorio (int a, int b);

void main()
{
int a,b,c;
printf("Introduzca a y b:");
scanf("%d %d",&a,&b);

c=combinatorio(a,b);

printf("Resultado: %d\n", c);
}

int factorial (int n)
{
int i, aux=1;

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

return aux;
}
int combinatorio (int a, int b)
{
return factorial(a)/(factorial(b)*factorial(a-b));
}

Ejercicios de prcticas de Fundamentos de Informtica. ELAI-UPM
Ttulo: Tablas de multiplicar
Enunciado
Hacer un programa que imprima por pantalla la tabla de multiplicar del numero n
siendo n un numero que se pide al usuario. Ambas tareas se haran cada una con una
funcin: una funcin que imprime por pantalla la tabla de multiplicar de un numero
entero que se le pasa como parametro, y otra funcion que solicita al usuario un numero
entre 1 y 10, tantas veces como sean necesario, y devolviendolo como retorno cuando el
numero cumple la condicion de estar entre 1 y 10.
El main() invoca a una funcin despus de la otra para ejecutar:
Ejemplo de ejecucin
Introduzca un numero entre 1 y 10: -3
Introduzca un numero entre 1 y 10: 11
Introduzca un numero entre 1 y 10: 7
Tabla del 7
7 x 1 = 7
(tabla completa)
7 x 9 = 63
Solucin o soluciones
#include<stdio.h>

void TablaMultiplicar(int n);
int PideNumero();

main()
{
int i=PideNumero();
TablaMultiplicar(i);
}

void TablaMultiplicar(int n)
{
int i;
printf("Tabla del %d\n",n);
for (i=1; i<10; i++)
printf("%d x %d = %d\n",n,i,n*i);
}
int PideNumero()
{
int n;
do
{
printf("Introduzca un numero entre 1 y 10: ");
scanf("%d",&n);
}
while(n<1 || n>10);
return n;
}

You might also like