Titulo: Suma de N primeros números - ELAI-UPM

Anuncio
Ejercicios de prácticas de Fundamentos de Informática.
ELAI-UPM
Titulo: Suma de N primeros números
Enunciado
Realizar un programa que pida un número N de tipo entero por teclado. Se usará una
función para calcular el valor de la suma de los N primeros números enteros, usando un
parámetro de tipo entero para indicar el valor de N, y retornará la suma. El programa
principal usará la función para obtener el resultado y mostrarlo por pantalla. Si el
número es negativo, no se realiza la llamada a la función, y se muestra por pantalla "El
número es negativo". La suma de los números se hará de forma algorítmica con un
bucle for.
Ejemplo de ejecución
Introduzca n: -3
El numero es negativo.
Introduzca n: 5
La suma de los 5 primeros numeros es: 15
Solución 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 prácticas de Fundamentos de Informática.
ELAI-UPM
Titulo: Tabla de valores de una función
Enunciado
Programar una función que admita como parámetros 2 valores enteros a y b. La
función calculará la expresión a·b-a-b y retornará el valor resultante.
La función principal debe pedir un número N entero al usuario, y mostrar por pantalla el
resultado de aplicar la función a varios valores. Para el valor a se emplearán los valores
del 0 al 10, y para el valor b se usará el número N que proporcionó el usuario. Se
pondrá cada resultado en una línea, indicando el valor de a, y el valor resultante de la
función, separados por " --> "
Ejemplo de ejecución
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
Solución 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 prácticas de Fundamentos de Informática.
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 también programar una función "precio_con_iva"
que admite 2 parámetros de tipo float: el precio que introduce el usuario, y el IVA como
porcentaje (16% será 16). La función devolverá el precio con el IVA incluido. El
programa principal usará esta función para calcular el total.
Ejemplo de ejecución
Introduzca n: 200
Total: 232.000000
Introduzca n: 17
Total: 17.720000
Introduzca n: -1
Solución 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 prácticas de Fundamentos de Informática.
ELAI-UPM
Titulo: Conversión de temperaturas
Enunciado
Realizar un programa para realizar la conversión de temperaturas. El programa pide al
usuario que introduzca un valor y una letra, en la misma línea (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 centígrados a Fahrenheit. Si la letra es 'F', la temperatura se convertirá de grados
Fahrenheit a grados Centígrados. 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 usarán 2 funciones cent_fahr y fahr_cent, para convertir de una unidad a
otra. Estas funciones aceptarán un parámetro (la temperatura en una escala) y retornarán
el valor en la otra escala. (La relación de escalas corresponde a C= (F-32) / 1.8 )
Ejemplo de ejecución
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
Solución o soluciones
#include <stdio.h>
float cent_fahr(float cent){
float fahr_cent(float fahr){
return ((cent*1.8)+32);
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 prácticas de Fundamentos de Informática.
ELAI-UPM
Titulo: Máximo de 3
Enunciado
Programar una función maximo3 para calcular el máximo de tres valores a , b y c de
tipo entero, que se admiten como parámetros y se retorna el valor del mayor. Esta
función usará a su vez a otra función maximo2 (que también debe programarse) que
calcula el máximo entre 2 valores a y b, que se pasan como parámetros a la función.
El programa principal pedirá al usuario 2 valores, y usará la función maximo3 para
calcular el mayor entre 0 y esos dos valores.
Ejemplo de ejecución
Introduzca 2 numeros: 2 5
El mayor es: 5
Introduzca 2 numeros: -2 -7
El mayor es: 0
Solución 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 prácticas de Fundamentos de Informática.
ELAI-UPM
Titulo: Líneas de asteriscos con función
Enunciado
Programar una función 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 función
retorna ese valor.
Programar una función que muestra una línea de asteriscos '*' por pantalla. La función
admitirá un parámetro que será el número de asteriscos. La línea se finalizará con un
carácter de fin de línea.
En el programa principal, usar las funciones anteriores para: pedir un número entero y
mostrar varias líneas de asteriscos, de forma que la primera línea tendrá un asterisco, e
irá sumando un asterisco más en cada línea hasta alcanzar el número introducido por el
usuario.
Ejemplo de ejecución
Introduzca un numero: -2
Introduzca un numero: 0
Introduzca un numero: 4
*
**
***
****
Solución 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 prácticas de Fundamentos de Informática.
ELAI-UPM
Titulo: Calculo de los términos impares de una serie
Enunciado
i+2
con i = 1,....., n a
10
través de una función con el siguiente prototipo, siendo n un número entero que se
solicita al usuario desde el main() tantas veces como sea necesario, hasta que el
usuario teclee un numero mayor que cero.
Calcular los n primeros términos impares de la serie: a i =
float TerminoN (int);
Ejemplo de ejecución
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
Solución 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 prácticas de Fundamentos de Informática.
ELAI-UPM
Titulo: Calculo del término n-ésimo
Enunciado
n
∑i
Calculo el término n-ésimo de la serie: a n = i =0 a través de dos funciones con el
n!
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 cálculo del sumatorio tiene que hacerse obligatoriamente de forma
algorítmica mediante un bucle for.
int SumoN (int);
int FactN (int);
Ejemplo de ejecución
Introduce n: 5
El termino n-esimo es: 0.125
Solución 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 prácticas de Fundamentos de Informática.
ELAI-UPM
Titulo: Distancia entre dos puntos
Enunciado
Realizar un programa para calcular la distancia entre dos puntos introducidos por el
usuario a través de una función con el siguiente prototipo:
float dist (float x1, float y1, float x2, float y2);
Ejemplo de ejecución
Introduce el primer punto: 1 0
Introduce el segundo punto: 0 1
Solución 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 prácticas de Fundamentos de Informática.
ELAI-UPM
Titulo: Sumatorio desde “a” hasta “b”
Enunciado
b
Realizar una función para retorne el valor de la siguiente suma s = ∑ ( n ⋅ i ) donde a , b
i=a
y n son números introducidos por el usuario.
int Sumatorio (int n, int a, int b);
Ejemplo de ejecución
Introduce el numero: 3
Introduce a y b: 2 7
la suma es: 81
Solución 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 prácticas de Fundamentos de Informática.
ELAI-UPM
Título: Suma de una serie con una función
Enunciado
Realizar un programa que calcule la suma de la siguiente serie utilizando una función:
n
1 1 1 1
1
= 2 + 2 + 2 + ... + 2
2
1 2 3
n
i =1 i
suma = ∑
A la función, denominada SumaSerie, se le pasará como argumento un valor de n
leído desde el teclado y devolverá la suma como valor de retorno. Finalmente, el valor
de la suma será impreso en la pantalla desde la función main().
Nota: Se supondrá que el usuario introduce siempre un valor de n mayor o igual que 1.
Ejemplo de ejecución
Introduzca n: 100
La suma vale 1.634984
Solución 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 prácticas de Fundamentos de Informática.
ELAI-UPM
Título: Cálculo de ab
Enunciado
Realizar un programa que calcule con una función, llamada potencia, el valor de ab,
donde a y b son dos números enteros introducidos desde el teclado tal que a>0 y b>=0
(se supondrá que el usuario introduce dos números que cumplen estas condiciones).
Nota: no se pueden utilizar funciones de la librería de matemáticas. El cálculo de ab lo
realizará la función teniendo en cuenta que ab=a·a·a….a (b veces).
Ejemplos de ejecución
Introduzca a y b: 2 0
2 elevado a 0 vale 1
Introduzca a y b: 2 4
2 elevado a 4 vale 16
Solución 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 prácticas de Fundamentos de Informática.
ELAI-UPM
Título: Aproximación del número e
Enunciado
Realizar un programa que calcule una aproximación del número e obtenida al sumar la
siguiente serie:
10
1
1 1 1
1
= 1 + + + + ... +
1! 2! 3!
10!
n =0 n!
e≈∑
La suma de la serie se realizará dentro la función main(), pero hará uso de una función
llamada factorial, a la cuál se le pasa como argumento el valor de n y devuelve el valor
de n!. La función será llamada cada vez que haya que calcular el factorial de n.
Ejemplo de ejecución
El numero e vale aproximadamente 2.718282
Solución 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 prácticas de Fundamentos de Informática.
ELAI-UPM
Título: Mínimo de tres números enteros
Enunciado
Realizar un programa que calcule el mínimo de tres números enteros, a, b y c,
introducidos desde el teclado utilizando una función llamada minimo a la cuál se le
pasan como argumentos los tres números y devuelve el mínimo de ellos, que será
impreso desde la función main().
Ejemplo de ejecución
Introduzca los números: 12 -3 27
El minimo de ellos es 3
Solución 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
{
if (a>b)
//El mínimo
if(b<c)
return b;
else
return c;
else
//El mínimo
if(a<c)
return a;
else
return b;
}
//Tambien podria ser:
int minimo (int a, int b, int
{
int min=a;
if(b<min)
min=b;
if(c<min)
min=c;
return min;
}
c)
es b o c
es a o c
c)
Ejercicios de prácticas de Fundamentos de Informática.
ELAI-UPM
Título: ¿Cuántos múltiplos de 7 hay entre n y m?
Enunciado
Hacer un programa que determine cuántos múltiplos de 7 hay entre los números enteros
n y m, ambos inclusive. Los valores n y m serán introducidos desde el teclado (se
supondrá que ambos números son positivos y que m es mayor o igual que n).
El número de múltiplos será calculado con una función a la cuál se le pasan como
argumentos los valores de n y m. El valor calculado será devuelto a la función main()
e impreso en la pantalla.
Ejemplo de ejecución
Introduzca n y m: 10 25
Hay 2 multiplos de 7 entre 10 y 25
Solución 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 prácticas de Fundamentos de Informática.
ELAI-UPM
Título: Máximo común divisor
Enunciado
Hacer un programa que determine el máximo común divisor de dos números enteros “a”
y “b” que se solicitan al usuario por teclado desde el main(). Dichos números serán
pasados a una función, que retorna el MCD de ambos, y el main() se encarga de sacar
el resultado por pantalla. Si uno de los dos números es negativo, se muestra un mensaje
de error y no se invoca la función:
Ejemplo de ejecución
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
Solución 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 prácticas de Fundamentos de Informática.
ELAI-UPM
Título: Numero combinatorio
Enunciado
Hacer un programa que determine el numero combinatorio “a” sobre “b”, siendo a y b
números enteros que se piden al usuario por teclado desde el main(). Dichos
números serán pasados a una función como parámetros, retornando dicha función el
número combinatorio que tiene como expresión:
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 ejecución
Introduzca a y b:6 2
Resultado: 15
Solución 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 prácticas de Fundamentos de Informática.
ELAI-UPM
Título: 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
función: una función 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 función después de la otra para ejecutar:
Ejemplo de ejecución
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
7x1=7
… (tabla completa)
7 x 9 = 63
Solución 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;
}
Descargar