Título: Máximo de un vector - ELAI-UPM

Anuncio
Ejercicios de prácticas de Fundamentos de Informática.
ELAI-UPM
Título: Máximo de un vector
Enunciado
Hacer un programa que calcule el valor máximo de un vector de 5 números reales
introducidos desde el teclado, en la función main(). Para calcular el máximo se utilizará
una función a la que se pasarán como argumentos el vector y su dimensión (la función
debe servir para vectores de cualquier dimensión). El programa finalizará imprimiendo
en la pantalla, desde la función main(), el máximo del vector.
Notas:
- Para realizar la función puede utilizarse la notación de subíndices o la de
punteros.
- Sólo se puntuarán las soluciones en las que las componentes del vector se
manejen con la ayuda de bucles.
Ejemplo de ejecución
Introduzca las componentes del vector
1.0
-2.0
3.0
4.0
5.0
El maximo del vector es 5.000000
Solución o soluciones
#include <stdio.h>
float maximodelvector(float vector[], int dimension);
void main()
{
float v[5], maximo;
int i;
printf("Introduzca las componentes del vector\n");
for(i=0;i<5;i++)
scanf("%f", &v[i]);
maximo=maximodelvector(v, 5);
printf("El maximo del vector es %f\n", maximo);
}
float maximodelvector(float vector[], int dimension)
{
float max;
int i;
for(i=0;i<dimension;i++)
if(vector[i]>max || i==0])
max=vector[i];
return max;
}
Ejercicios de prácticas de Fundamentos de Informática.
ELAI-UPM
Título: Mínimo de un vector
Enunciado
Hacer un programa que calcule el valor mínimo de un vector de 5 números reales
introducidos desde el teclado, en la función main() Para calcular el mínimo se utilizará
una función a la que se pasarán como argumentos el vector y su dimensión (la función
debe servir para vectores de cualquier dimensión). El programa finalizará imprimiendo
en la pantalla, desde la función main(), del mínimo del vector.
Notas:
- Para realizar la función puede utilizarse la notación de subíndices o la de
punteros.
- Sólo se puntuarán las soluciones en las que las componentes del vector se
manejen con la ayuda de bucles.
Ejemplo de ejecución
Introduzca las componentes del vector
1.0
-2.0
3.0
4.0
5.0
El minimo del vector es -2.000000
Solución o soluciones
#include <stdio.h>
float minimodelvector(float vector[], int dimension);
void main()
{
float v[5], minimo;
int i;
printf("Introduzca las componentes del vector\n");
for(i=0;i<5;i++)
scanf("%f", &v[i]);
minimo=minimodelvector(v, 5);
printf("El minimo del vector es %f\n", minimo);
}
float minimodelvector(float vector[], int dimension)
{
float min;
int i;
for(i=0;i<dimension;i++)
if(vector[i]<min || i==0)
min=vector[i];
return min;
}
Ejercicios de prácticas de Fundamentos de Informática.
ELAI-UPM
Título: Media de un vector
Enunciado
Hacer un programa que calcule la media de un vector de 5 números reales introducidos
desde el teclado, en la función main(). Para calcular la media se utilizará una función
a la que se pasarán como argumentos el vector y su dimensión (la función debe servir
para vectores de cualquier dimensión). El programa finalizará imprimiendo en la
pantalla, desde la función main(), la media del vector.
Notas:
- Para realizar la función puede utilizarse la notación de subíndices o la de
punteros.
- Sólo se puntuarán las soluciones en las que las componentes del vector se
manejen con la ayuda de bucles.
Ejemplo de ejecución
Introduzca las componentes del vector
1.0
-2.0
3.0
4.0
5.0
La media del vector es 2.200000
Solución o soluciones
#include <stdio.h>
float mediadelvector(float vector[], int dimension);
void main()
{
float v[5], media;
int i;
printf("Introduzca las componentes del vector\n");
for(i=0;i<5;i++)
scanf("%f", &v[i]);
media=mediadelvector(v, 5);
printf("La media del vector es %f\n", media);
}
float mediadelvector(float vector[], int dimension)
{
float suma=0;
int i;
for(i=0;i<dimension;i++)
suma+=vector[i];
return (suma/dimension);
}
Ejercicios de prácticas de Fundamentos de Informática.
ELAI-UPM
Título: Módulo de un vector
Enunciado
Hacer un programa que calcule el módulo de un vector de números reales de dimensión
5 cuyas componentes se introducirán desde el teclado, en la función main(). Para
calcular módulo se utilizará una función a la que se pasarán como argumentos el vector
y su dimensión (la función debe servir para vectores de cualquier dimensión). El
programa finalizará imprimiendo en la pantalla, desde la función main(), el valor del
módulo.
Notas:
- El módulo de un vector se define como la raíz cuadrada de la suma de sus
componentes al cuadrado. Para calcular la raíz cuadrada se utilizará la función
sqrt() de math.h.
- Puede utilizarse la notación de subíndices o la de punteros.
- Sólo se puntuarán las soluciones en las que las componentes del vector se
manejen con la ayuda de bucles.
Ejemplo de ejecución
Introduzca las componentes del vector
1.0
-2.0
3.0
4.0
5.0
El modulo del vector vale 7.416198
Solución o soluciones
#include <stdio.h>
#include <math.h>
float modulodelvector(float vector[], int dimension);
void main()
{
float v[5], modulo;
int i;
printf("Introduzca las componentes del vector\n");
for(i=0;i<5;i++)
scanf("%f", &v[i]);
modulo=modulodelvector(v, 5);
printf("El modulo del vector vale %f\n", modulo);
}
float modulodelvector(float vector[], int dimension)
{
float suma=0;
int i;
for(i=0;i<dimension;i++)
suma+=vector[i]*vector[i];
return (float)sqrt(suma);
}
Ejercicios de prácticas de Fundamentos de Informática.
ELAI-UPM
Título: Producto escalar de dos vectores
Enunciado
Hacer un programa que calcule el producto escalar de dos vectores de números reales de
dimensión 3, cuyas componentes se introducirán desde el teclado, en la función
main(). Para calcular el producto escalar se utilizará una función a la que se pasarán
como argumentos los dos vectores y su dimensión (la función debe servir para vectores
de cualquier dimensión). El programa finalizará imprimiendo el producto escalar desde
la función main().
Notas:
- El producto escalar se define como la suma del producto de las componentes
respectivas de cada vector (primera por primera más segunda por segunda, etc.).
- Puede utilizarse la notación de subíndices o la de punteros.
- Sólo se puntuarán las soluciones en las que las componentes de los vectores se
manejen con la ayuda de bucles.
Ejemplo de ejecución
Introduzca la componentes del primer vector
0.0
1.0
0.0
Introduzca la componentes del segundo vector
2.0
-2.0
0.0
El producto escalar vale -2.000000
Solución o soluciones
#include <stdio.h>
float productoescalar(float vector1[], float vector2[], int dimension);
void main()
{
float v1[3], v2[3], p;
int i;
printf("Introduzca las componentes del primer vector\n");
for(i=0;i<3;i++)
scanf("%f", &v1[i]);
printf("Introduzca las componentes del segundo vector\n");
for(i=0;i<3;i++)
scanf("%f", &v2[i]);
p=productoescalar(v1, v2, 3);
printf("El producto escalar vale %f\n", p);
}
float productoescalar(float vector1[], float vector2[], int dimension)
{
float suma=0;
int i;
for(i=0;i<dimension;i++)
suma+=vector1[i]*vector2[i];
return suma;
}
Ejercicios de prácticas de Fundamentos de Informática.
ELAI-UPM
Título: Longitud de una palabra
Enunciado
Realizar un programa que cuente el número de caracteres que tiene una palabra
(excluyendo el carácter nulo) introducida desde el teclado en la función main().
Para ello, se utilizará una función que devuelve el número de caracteres de una palabra
que se le pasa como único argumento. El programa finalizará imprimiendo el número de
caracteres de la palabra desde la función main().
Notas:
- Para realizar la función puede utilizarse la notación de subíndices o la de
punteros.
- No pueden utilizarse funciones de la biblioteca string.h
Ejemplo de ejecución
Introduzca una palabra: Hola
Hola tiene 4 caracteres
Solución o soluciones
#include <stdio.h>
int longcad(char cadena[]);
void main()
{
char palabra[51];
int n;
printf("Introduzca una palabra: ");
scanf("%s", palabra);
n=longcad(palabra);
printf("%s tiene %d caracteres\n", palabra, n);
}
int longcad(char cadena[])
{
int i=0;
while(cadena[i]!='\0')
i++;
return i;
}
Ejercicios de prácticas de Fundamentos de Informática.
ELAI-UPM
Título: Comprobar la longitud de dos palabras
Enunciado
Realizar un programa que compruebe si dos palabras introducidas desde el teclado en la
función main() tienen el mismo número de caracteres (excluyendo el carácter nulo).
Para ello, se utilizará una función que devuelve el número de caracteres de una palabra
que se le pasa como único argumento.
El programa finalizará imprimiendo desde la función main() si las dos palabras tienen
o no la misma longitud.
Notas:
- Para realizar la función puede utilizarse la notación de subíndices o la de
punteros.
- No pueden utilizarse funciones de la biblioteca string.h
Ejemplos de ejecución
Introduzca la primera palabra: hola
Introduzca la segunda palabra: adios
Las palabras tienen distinta longitud
Introduzca la primera palabra: fundamentos
Introduzca la segunda palabra: informatica
Las palabras tienen la misma longitud
Solución o soluciones
#include <stdio.h>
int longcad(char cadena[]);
void main()
{
char palabra1[51], palabra2[51];
printf("Introduzca la primera palabra: ");
scanf("%s", palabra1);
printf("Introduzca la segunda palabra: ");
scanf("%s", palabra2);
if(longcad(palabra1)==longcad(palabra2))
printf("Las palabras tienen la misma longitud\n");
else
printf("Las palabras tienen distinta longitud\n");
}
int longcad(char cadena[])
{
int i=0;
while(cadena[i]!='\0')
i++;
return i;
}
Ejercicios de prácticas de Fundamentos de Informática.
ELAI-UPM
Título: Contar un carácter en una frase
Enunciado
Realizar un programa que cuente el número de veces que aparece un carácter
introducido desde el teclado en una frase (la frase se escribirá directamente en el código
en el momento de declarar la cadena de caracteres correspondiente).
Para contar el número de apariciones, se utilizará una función a la cuál se le pasan como
argumentos la frase y el carácter que hay que contar.
El programa finalizará imprimiendo en pantalla desde la función main() el número de
veces que aparece el carácter en la frase.
Nota:
- Para realizar la función puede utilizarse la notación de subíndices o la de
punteros.
Ejemplo de ejecución
Frase: Fundamentos de Informatica
Introduzca el caracter: n
El caracter n aparece 3 veces
Solución o soluciones
#include <stdio.h>
int contar(char cadena[], char caracter);
void main()
{
char frase[]="Fundamentos de Informatica";
char car;
int apariciones;
printf("Frase: %s\n", frase);
printf("Introduzca el caracter: ");
scanf("%c", &car);
apariciones=contar(frase, car);
printf("El caracter %c aparece %d veces\n", car, apariciones);
}
int contar(char cadena[], char caracter)
{
int i=0, veces=0;
while(cadena[i]!='\0')
{
if(cadena[i]==caracter)
veces++;
i++;
}
return veces;
}
Ejercicios de prácticas de Fundamentos de Informática.
ELAI-UPM
Titulo: Cuento las A
Enunciado
Realizar un programa que cuente el número de veces que aparece la letras ‘A’ o ‘a’ en
una frase introducida por el usuario, en la función main().
Para contar el número de apariciones, se utilizará una función a la cuál se le pasan como
argumentos la frase.
El programa finalizará imprimiendo en pantalla desde la función main() el número de
veces que aparece el carácter en la frase.
int cuentoA (char cad[]);
Ejemplo de ejecución
Introduce una cadena:
Hola buenos dias como estas?
En tu cadena hay 3 letras a.
Solución o soluciones
#include <stdio.h>
int cuentoA(char cad[]);
void main()
{
char cad[50];
int cont=0;
printf("Introduce una cadena:\n");
gets(cad);
cont = cuentoA(cad);
printf("En tu cadena hay %d letras a", cont);
}
int cuentoA(char cad[])
{
int i=0, cont=0;
while(cad[i] != '\0')
{
if(cad[i] == 'A' || cad[i] == 'a')
cont++;
i++;
}
return cont;
}
Ejercicios de prácticas de Fundamentos de Informática.
ELAI-UPM
Titulo: Contar elementos impares
Enunciado
Realizar un programa que solicite al usuario un vector de números enteros de 5
componentes, en la función main(). Una vez almacenados los valores en el vector, se
pasará como parámetro el vector a una función que devolverá el número de elementos
impares que tiene dicho vector. El programa termina imprimiendo dicho número desde
el main().
Nota: No se valorarán ejercicios que no utilicen bucles para manejar el vector.
Ejemplo de ejecución
Introduce el vector:
1
1
2
3
5
Tu vector tiene 4 numeros impares
Solución o soluciones
#include <stdio.h>
int impares(int vec[]); //tb int impares(int vec[], int num);
void main()
{
int vec[5], imp=0, i;
printf("Introduce un vector:\n ");
for(i=0; i<5; i++)
scanf("%d",&vec[i]);
imp=impares(vec);
printf("Tu vector tiene %d numeros impares", imp);
}
int impares(int a[])
{
int cont=0, i;
for(i=0; i<5; i++)
if(a[i]%2 != 0)
cont++;
return cont;
}
Ejercicios de prácticas de Fundamentos de Informática.
ELAI-UPM
Titulo: Formato
Enunciado
Realizar una función que imprima en una nueva línea cada palabra de una frase
introducida por el usuario. El prototipo de la función será:
void formato (char cad[]);
La frase será introducida por el usuario en el main().
No se pueden utilizar funciones de string.h
Ejemplo de ejecución
Introduce una frase:
Hola que tal estas?
Hola
que
tal
estas?
Solución o soluciones
#include <stdio.h>
void formato(char cad[]);
void main()
{
char cad[50];
printf("Introduce una frase:\n");
gets(cad);
formato(cad);
}
void formato(char cad[])
{
int i=0;
while(cad[i] != '\0')
{
if(cad[i] == ' ')
printf("\n");
else
printf("%c", cad[i]);
i++;
}
}
Ejercicios de prácticas de Fundamentos de Informática.
ELAI-UPM
Titulo: Solo Imprimo pares
Enunciado
Realizar un programa con una función que sólo imprima los elementos pares de un
vector de 10 elementos introducido por el usuario, en la función main(). La función
tendrá el siguiente prototipo:
void imprimopares (int a[]);
Ejemplo de ejecución
Introduce el vector:
0
1
2
3
4
5
6
7
8
9
Los elementos pares son: 0 2 4 6 8
Solución o soluciones
#include <stdio.h>
void imprimopares(int vec[]);
void main()
{
int i, vec[10];
printf("Introduce un vector:\n ");
for(i=0; i<10; i++)
scanf("%d ",&vec[i]);
printf("Los elementos pares son: ");
imprimopares(vec);
}
void imprimopares(int a[])
{
int i;
for(i=0; i<10;i++ )
if(a[i]%2 ==0)
printf("%d ",a[i]);
}
Ejercicios de prácticas de Fundamentos de Informática.
ELAI-UPM
Titulo: Sustituyo y Cuento
Enunciado
Realizar una función que cuente la cantidad de caracteres de una cadena introducida por
el usuario y que además sustituya los espacios en blanco por ‘_’ .
int mirocadena (char cad[]);
Ejemplo de ejecución
Introduce una frase:
Hola que tal estas?
Hola_que_tal_estas? tiene 19 caracteres.
Solución o soluciones
#include <stdio.h>
int mirocadena(char cad[]);
void main()
{
char cad[50];
int largo;
printf("Introduce una frase:\n");
gets(cad);
largo=mirocadena(cad);
printf(" tiene %d caracteres", largo);
}
int mirocadena(char a[])
{
int i=0, cont=0;
while(a[i] != '\0')
{
if(a[i] == ' ')
a[i]= '_';
printf("%c", a[i]);
i++;
}
return i;
}
Ejercicios de prácticas de Fundamentos de Informática.
ELAI-UPM
Título: Paso de segundos a horas, minutos y segundos
Enunciado
Dado un número entero de segundos se desea pasar a horas, minutos y segundos
mediante una función llamada convierte que reciba, como argumento, el número de
segundos y devuelva las horas, minutos y segundos calculados, también como
argumentos.
Ejemplo de ejecución
Introduzca el total de segundos a convertir: 8138
8138 segundos son 2 h, 15m, 38s
Solución
#include<stdio.h>
void convierte (int,int *,int *,int *);
void main(void)
{
int segundos,h,m,s;
printf ("Introduzca el total de segundos a convertir: ");
scanf ("%d",&segundos);
convierte(segundos,&h,&m,&s);
printf("%d segundos son %dh, %dm, %ds\n",segundos,h,m,s);
}
void convierte (int segundos,int *h,int *m, int *s)
{
// *s segundos:resto de dividir el total entre 60
*s=segundos%60;
// *h horas: cociente entero de dividir el total entre 3600
*h=segundos/3600;
// *m:diferencia entre los segundos y *h pasadas a segundos
//
y se obtiene el cociente entero al dividir por 60
*m=(segundos-*h*3600)/60;
}
Ejercicios de prácticas de Fundamentos de Informática.
ELAI-UPM
Titulo: Cambiar a Mayúsculas
Enunciado
Se pide escribir un programa que pida un texto por teclado (una cadena de caracteres).
Es texto debe pasarse a una función cambiar_a_mayus, que cambia todas las letras
minúsculas del texto a mayúsculas.
El programa principal mostrará la cadena ya cambiada.
No se deben tener en cuenta las vocales acentuadas ni las eñes, que tiene otros códigos.
Para leer la cadena de texto, puede emplearse scanf o gets.
Ejemplo de ejecución
Introduce una cadena: CaDeNa17
CADENA17
Solución o soluciones
#include <stdio.h>
void cambiar_a_mayus(char* cadena);
void main()
{
char cad[100];
printf("Introduce una cadena: \n");
gets(cad);
cambiar_a_mayus(cad);
printf("%s\n", cad );
}
void cambiar_a_mayus(char* cadena)
{
int i;
for(i=0;cadena[i]!=0;i++)
{
if( (cadena[i]>='a') && (cadena[i]<='z') )
cadena[i]-= 32;
}
}
Ejercicios de prácticas de Fundamentos de Informática.
ELAI-UPM
Título: Calcular el máximo y el mínimo de un lote de datos
mediante una función.
Enunciado
Dado un conjunto de números enteros almacenados en un vector (que se puede
inicializar directamente en código por simplicidad) se pide escribir una función
maxmin que recibiendo como argumentos el conjunto y el número de elementos de
éste, devuelva mediante paso de parámetros por referencia el máximo y el mínimo del
conjunto.
Ejemplo de ejecución
Maximo: 123 minimo: -23
Solución
#include<stdio.h>
void maxmin(int *,int,int *,int *);
void main ()
{
int datos[10]={1,3,-4,-2,5,123,32,-23,10,11};
int max,min;
maxmin(datos,10,&max,&min);
printf ("Maximo: %d
minimo:
%d\n",max,min);
}
void maxmin (int *val,int can,int *max,int *min)
{
int i;
if(can>0)
{
*max=val[0];
*min=val[0];
}
for (i=1;i<can;++i)
{
if (val[i]>*max)
*max=val[i];
if (val[i]<*min)
*min=val[i];
}
}
Ejercicios de prácticas de Fundamentos de Informática.
ELAI-UPM
Título: Valor absoluto de un vector
Enunciado
Hacer un programa que calcule el valor absoluto de un vector de 5 números reales
introducidos desde el teclado, en la función main(). Para calcularlo se utilizará una
función a la que se pasarán como argumentos el vector y su dimensión (la función debe
servir para vectores de cualquier dimensión), y la función modificara el vector que se le
pasa como parámetro. El programa finalizará imprimiendo en la pantalla, desde la
función main(), dicho vector.
Nota: Sólo se puntuarán las soluciones en las que las componentes del vector se
manejen con la ayuda de bucles.
Ejemplo de ejecución
Introduzca las componentes del vector
-12
23
-123
2
-4
v[0]=12.000000
v[1]=23.000000
v[2]=123.000000
v[3]=2.000000
v[4]=4.000000
Solución o soluciones
#include <stdio.h>
void valor_absoluto(float vector[], int dimension);
void main()
{
float v[5];
int i;
printf("Introduzca las componentes del vector\n");
for(i=0;i<5;i++)
scanf("%f", &v[i]);
valor_absoluto(v, 5);
for(i=0;i<5;i++)
printf("v[%d]=%f\n", i,v[i]);
}
void valor_absoluto(float vector[], int dimension)
{
int i;
for(i=0;i<dimension;i++)
{
if(vector[i]<0)
vector[i]=-vector[i];
}
}
Ejercicios de prácticas de Fundamentos de Informática.
ELAI-UPM
Título: Ecuación cuadrada
Enunciado
Hacer un programa que calcule las raíces reales de una ecuación cuadrada cuyos
coeficientes (a, b, c) se le solicitan al usuario:
ax2 + bx +c =0
Para ello se programara una función que admita 5 parámetros: los tres primeros serán
los coeficientes (a, b, c) de la ecuación, y los dos siguientes serán pasados por referencia
para que la función devuelva los valores calculados de las raíces reales de la ecuación.
La función devolverá un 1 como retorno si es capaz de calcular raíces reales y un cero
en caso contrario, lo que será utilizado por la función main() a la hora de mostrar el
resultado.
Ejemplo de ejecución
Introduzca los coeficientes a,b y c
2 3 -10
Soluciones reales: 6.433981 -12.433981
Solución o soluciones
#include <stdio.h>
#include <math.h> //para la funcion raiz cuadrada sqrt
int raices(float a,float b,float c,float* r1,float* r2);
void main(void)
{
float a,b,c;//coeficientes
float r1,r2;//raices, soluciones
int ret;
printf("Introduzca los coeficientes a,b y c\n");
scanf("%f %f %f",&a,&b,&c);
ret=raices(a,b,c,&r1,&r2);
if(ret)
printf("Soluciones reales: %f %f\n",r1,r2);
else
printf("Ecuacion sin solucion real\n");
}
int raices(float a,float b,float c,float* r1,float* r2)
{
float disc;//discriminante
disc=b*b-4*a*c;
if(disc>=0)//solucion real
{
*r1=(-b+(float)sqrt(disc))/2*a;
*r2=(-b-(float)sqrt(disc))/2*a;
return 1;
}
return 0;
}
Descargar