Você está na página 1de 18

Ejercicios de prcticas de Fundamentos de Informtica.

ELAI-UPM

Ttulo: Mximo de un vector


Enunciado
Hacer un programa que calcule el valor mximo de un vector de 5 nmeros reales introducidos desde el teclado, en la funcin main(). Para calcular el mximo se utilizar una funcin a la que se pasarn como argumentos el vector y su dimensin (la funcin debe servir para vectores de cualquier dimensin). El programa finalizar imprimiendo en la pantalla, desde la funcin main(), el mximo del vector. Notas: - Para realizar la funcin puede utilizarse la notacin de subndices o la de punteros. - Slo se puntuarn las soluciones en las que las componentes del vector se manejen con la ayuda de bucles.

Ejemplo de ejecucin
Introduzca las componentes del vector 1.0 -2.0 3.0 4.0 5.0 El maximo del vector es 5.000000

Solucin 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 prcticas de Fundamentos de Informtica.

ELAI-UPM

Ttulo: Mnimo de un vector


Enunciado
Hacer un programa que calcule el valor mnimo de un vector de 5 nmeros reales introducidos desde el teclado, en la funcin main() Para calcular el mnimo se utilizar una funcin a la que se pasarn como argumentos el vector y su dimensin (la funcin debe servir para vectores de cualquier dimensin). El programa finalizar imprimiendo en la pantalla, desde la funcin main(), del mnimo del vector. Notas: - Para realizar la funcin puede utilizarse la notacin de subndices o la de punteros. - Slo se puntuarn las soluciones en las que las componentes del vector se manejen con la ayuda de bucles.

Ejemplo de ejecucin
Introduzca las componentes del vector 1.0 -2.0 3.0 4.0 5.0 El minimo del vector es -2.000000

Solucin 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 prcticas de Fundamentos de Informtica.

ELAI-UPM

Ttulo: Media de un vector


Enunciado
Hacer un programa que calcule la media de un vector de 5 nmeros reales introducidos desde el teclado, en la funcin main(). Para calcular la media se utilizar una funcin a la que se pasarn como argumentos el vector y su dimensin (la funcin debe servir para vectores de cualquier dimensin). El programa finalizar imprimiendo en la pantalla, desde la funcin main(), la media del vector. Notas: - Para realizar la funcin puede utilizarse la notacin de subndices o la de punteros. - Slo se puntuarn las soluciones en las que las componentes del vector se manejen con la ayuda de bucles.

Ejemplo de ejecucin
Introduzca las componentes del vector 1.0 -2.0 3.0 4.0 5.0 La media del vector es 2.200000

Solucin 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 prcticas de Fundamentos de Informtica.

ELAI-UPM

Ttulo: Mdulo de un vector


Enunciado
Hacer un programa que calcule el mdulo de un vector de nmeros reales de dimensin 5 cuyas componentes se introducirn desde el teclado, en la funcin main(). Para calcular mdulo se utilizar una funcin a la que se pasarn como argumentos el vector y su dimensin (la funcin debe servir para vectores de cualquier dimensin). El programa finalizar imprimiendo en la pantalla, desde la funcin main(), el valor del mdulo. Notas: - El mdulo de un vector se define como la raz cuadrada de la suma de sus componentes al cuadrado. Para calcular la raz cuadrada se utilizar la funcin sqrt() de math.h. - Puede utilizarse la notacin de subndices o la de punteros. - Slo se puntuarn las soluciones en las que las componentes del vector se manejen con la ayuda de bucles.

Ejemplo de ejecucin
Introduzca las componentes del vector 1.0 -2.0 3.0 4.0 5.0 El modulo del vector vale 7.416198

Solucin 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 prcticas de Fundamentos de Informtica.

ELAI-UPM

Ttulo: Producto escalar de dos vectores


Enunciado
Hacer un programa que calcule el producto escalar de dos vectores de nmeros reales de dimensin 3, cuyas componentes se introducirn desde el teclado, en la funcin main(). Para calcular el producto escalar se utilizar una funcin a la que se pasarn como argumentos los dos vectores y su dimensin (la funcin debe servir para vectores de cualquier dimensin). El programa finalizar imprimiendo el producto escalar desde la funcin main(). Notas: - El producto escalar se define como la suma del producto de las componentes respectivas de cada vector (primera por primera ms segunda por segunda, etc.). - Puede utilizarse la notacin de subndices o la de punteros. - Slo se puntuarn las soluciones en las que las componentes de los vectores se manejen con la ayuda de bucles.

Ejemplo de ejecucin
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

Solucin 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 prcticas de Fundamentos de Informtica.

ELAI-UPM

Ttulo: Longitud de una palabra


Enunciado
Realizar un programa que cuente el nmero de caracteres que tiene una palabra (excluyendo el carcter nulo) introducida desde el teclado en la funcin main(). Para ello, se utilizar una funcin que devuelve el nmero de caracteres de una palabra que se le pasa como nico argumento. El programa finalizar imprimiendo el nmero de caracteres de la palabra desde la funcin main(). Notas: - Para realizar la funcin puede utilizarse la notacin de subndices o la de punteros. - No pueden utilizarse funciones de la biblioteca string.h

Ejemplo de ejecucin
Introduzca una palabra: Hola Hola tiene 4 caracteres

Solucin 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 prcticas de Fundamentos de Informtica.

ELAI-UPM

Ttulo: Comprobar la longitud de dos palabras


Enunciado
Realizar un programa que compruebe si dos palabras introducidas desde el teclado en la funcin main() tienen el mismo nmero de caracteres (excluyendo el carcter nulo). Para ello, se utilizar una funcin que devuelve el nmero de caracteres de una palabra que se le pasa como nico argumento. El programa finalizar imprimiendo desde la funcin main() si las dos palabras tienen o no la misma longitud. Notas: - Para realizar la funcin puede utilizarse la notacin de subndices o la de punteros. - No pueden utilizarse funciones de la biblioteca string.h

Ejemplos de ejecucin
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

Solucin 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 prcticas de Fundamentos de Informtica.

ELAI-UPM

Ttulo: Contar un carcter en una frase


Enunciado
Realizar un programa que cuente el nmero de veces que aparece un carcter introducido desde el teclado en una frase (la frase se escribir directamente en el cdigo en el momento de declarar la cadena de caracteres correspondiente). Para contar el nmero de apariciones, se utilizar una funcin a la cul se le pasan como argumentos la frase y el carcter que hay que contar. El programa finalizar imprimiendo en pantalla desde la funcin main() el nmero de veces que aparece el carcter en la frase. Nota: - Para realizar la funcin puede utilizarse la notacin de subndices o la de punteros.

Ejemplo de ejecucin
Frase: Fundamentos de Informatica Introduzca el caracter: n El caracter n aparece 3 veces

Solucin 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 prcticas de Fundamentos de Informtica.

ELAI-UPM

Titulo: Cuento las A


Enunciado
Realizar un programa que cuente el nmero de veces que aparece la letras A o a en una frase introducida por el usuario, en la funcin main(). Para contar el nmero de apariciones, se utilizar una funcin a la cul se le pasan como argumentos la frase. El programa finalizar imprimiendo en pantalla desde la funcin main() el nmero de veces que aparece el carcter en la frase.
int cuentoA (char cad[]);

Ejemplo de ejecucin
Introduce una cadena: Hola buenos dias como estas? En tu cadena hay 3 letras a.

Solucin 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 prcticas de Fundamentos de Informtica.

ELAI-UPM

Titulo: Contar elementos impares


Enunciado
Realizar un programa que solicite al usuario un vector de nmeros enteros de 5 componentes, en la funcin main(). Una vez almacenados los valores en el vector, se pasar como parmetro el vector a una funcin que devolver el nmero de elementos impares que tiene dicho vector. El programa termina imprimiendo dicho nmero desde el main(). Nota: No se valorarn ejercicios que no utilicen bucles para manejar el vector.

Ejemplo de ejecucin
Introduce el vector: 1 1 2 3 5 Tu vector tiene 4 numeros impares

Solucin 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 prcticas de Fundamentos de Informtica.

ELAI-UPM

Titulo: Formato
Enunciado
Realizar una funcin que imprima en una nueva lnea cada palabra de una frase introducida por el usuario. El prototipo de la funcin 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 ejecucin
Introduce una frase: Hola que tal estas? Hola que tal estas?

Solucin 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 prcticas de Fundamentos de Informtica.

ELAI-UPM

Titulo: Solo Imprimo pares


Enunciado
Realizar un programa con una funcin que slo imprima los elementos pares de un vector de 10 elementos introducido por el usuario, en la funcin main(). La funcin tendr el siguiente prototipo:
void imprimopares (int a[]);

Ejemplo de ejecucin
Introduce el vector: 0 1 2 3 4 5 6 7 8 9 Los elementos pares son: 0 2 4 6 8

Solucin 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 prcticas de Fundamentos de Informtica.

ELAI-UPM

Titulo: Sustituyo y Cuento


Enunciado
Realizar una funcin que cuente la cantidad de caracteres de una cadena introducida por el usuario y que adems sustituya los espacios en blanco por _ .
int mirocadena (char cad[]);

Ejemplo de ejecucin
Introduce una frase: Hola que tal estas? Hola_que_tal_estas? tiene 19 caracteres.

Solucin 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 prcticas de Fundamentos de Informtica.

ELAI-UPM

Ttulo: Paso de segundos a horas, minutos y segundos


Enunciado
Dado un nmero entero de segundos se desea pasar a horas, minutos y segundos mediante una funcin llamada convierte que reciba, como argumento, el nmero de segundos y devuelva las horas, minutos y segundos calculados, tambin como argumentos.

Ejemplo de ejecucin
Introduzca el total de segundos a convertir: 8138 8138 segundos son 2 h, 15m, 38s

Solucin
#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 prcticas de Fundamentos de Informtica.

ELAI-UPM

Titulo: Cambiar a Maysculas


Enunciado
Se pide escribir un programa que pida un texto por teclado (una cadena de caracteres). Es texto debe pasarse a una funcin cambiar_a_mayus, que cambia todas las letras minsculas del texto a maysculas. El programa principal mostrar la cadena ya cambiada. No se deben tener en cuenta las vocales acentuadas ni las ees, que tiene otros cdigos. Para leer la cadena de texto, puede emplearse scanf o gets.

Ejemplo de ejecucin
Introduce una cadena: CaDeNa17 CADENA17

Solucin 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 prcticas de Fundamentos de Informtica.

ELAI-UPM

Ttulo: Calcular el mximo y el mnimo de un lote de datos mediante una funcin.


Enunciado
Dado un conjunto de nmeros enteros almacenados en un vector (que se puede inicializar directamente en cdigo por simplicidad) se pide escribir una funcin maxmin que recibiendo como argumentos el conjunto y el nmero de elementos de ste, devuelva mediante paso de parmetros por referencia el mximo y el mnimo del conjunto.

Ejemplo de ejecucin
Maximo: 123 minimo: -23

Solucin
#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: } 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]; } } %d\n",max,min);

Ejercicios de prcticas de Fundamentos de Informtica.

ELAI-UPM

Ttulo: Valor absoluto de un vector


Enunciado
Hacer un programa que calcule el valor absoluto de un vector de 5 nmeros reales introducidos desde el teclado, en la funcin main(). Para calcularlo se utilizar una funcin a la que se pasarn como argumentos el vector y su dimensin (la funcin debe servir para vectores de cualquier dimensin), y la funcin modificara el vector que se le pasa como parmetro. El programa finalizar imprimiendo en la pantalla, desde la funcin main(), dicho vector. Nota: Slo se puntuarn las soluciones en las que las componentes del vector se manejen con la ayuda de bucles.

Ejemplo de ejecucin
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

Solucin 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 prcticas de Fundamentos de Informtica.

ELAI-UPM

Ttulo: Ecuacin cuadrada


Enunciado
Hacer un programa que calcule las races reales de una ecuacin cuadrada cuyos coeficientes (a, b, c) se le solicitan al usuario: ax2 + bx +c =0 Para ello se programara una funcin que admita 5 parmetros: los tres primeros sern los coeficientes (a, b, c) de la ecuacin, y los dos siguientes sern pasados por referencia para que la funcin devuelva los valores calculados de las races reales de la ecuacin. La funcin devolver un 1 como retorno si es capaz de calcular races reales y un cero en caso contrario, lo que ser utilizado por la funcin main() a la hora de mostrar el resultado.

Ejemplo de ejecucin
Introduzca los coeficientes a,b y c 2 3 -10 Soluciones reales: 6.433981 -12.433981

Solucin 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; }