Vous êtes sur la page 1sur 10

Descripcin de la Actividad

A continuacin se presentan ejercicios sobre: Funciones paso por valor, Punteros Funciones paso por referencia incluyendo vectores y cadenas. Funciones con estructuras. Los grupos de trabajo resolvern los ejercicios antes del da 26/04/2012. Ese da se realizar una o dos evaluaciones de 0.1 individual con ejercicios de la lista.

Funciones paso por valor


1. Valor Absoluto. Realice una funcin para calcular el valor absoluto de un nmero introducido por el usuario. 2. Suma N primeros. 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. 3. Calculo. 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 e 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 " --> " 4. Calculo del I.V.A. 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
float precio_con_iva(float precio, float iva_perct)

5. Conversin de Temperaturas. 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 ).
float cent_fahr(float cent) float fahr_cent(float fahr)

6. Mximo de 3 valores. 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.
int maximo2(int a,int b)

7. Asteriscos. 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.
int entrada(); void asteriscos(int num);

8. Serie. Calcular los primeros trminos impares de la serie ai =

i+2 con i = 1,....., n a travs 10

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 nmero mayor que cero.
float TerminoN (int);

9. Trmino n-simo. Calculo el trmino n-simo de la serie: a n = i =0 a travs de dos

i
n!

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); 10. Distancia. 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); 11. Sumatorio. Realizar una funcin para retorne el valor de la siguiente suma donde , y son

nmeros introducidos por el usuario.


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

12. Suma. Realizar una funcin para retorne el valor de la siguiente suma

s = ( n i ) donde
i =a

a , b y n son nmeros introducidos por el usuario. 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().
13. Potencia. Realizar un programa que calcule con una funcin, llamada potencia, el valor

de ab, 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 ab lo realizar la funcin teniendo en cuenta que ab=aaa.a (b veces) 14. Multiplos de 7. 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.
15. MDC. 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: int MCD( int a, int b);

Punteros
1. Realice la siguiente operacin utilizando punteros:
float x=25.2, y=45.7, c; c=x+y;

2. Indique si la printf() del cdigo se imprime o no en pantalla. Comente cada lnea del programa.
#include <stdio.h> void main() { int a, b; int *p1, *p2; a = 5; b = 5; p1 = &a; p2 = &b; if ( *p1 == *p2 ) printf( "Son iguales\n" ); }

3. Idem al ejercicio anterior pero con el siguiente cdigo:


#include <stdio.h> void main() { int a, b; int *p1, *p2; a = 5; b = 5; p1 = &a; p2 = &b; if ( p1 == p2) printf( "Son iguales\n" ); }

4. Realice un programa para cambiar el valor de x por el de y empleando punteros:


float x=25.2, y=45.7, c;

5. Cul es el valor que coge el puntero p2


#include<stdio.h> void main() { int a; int*p1,*p2; p1=&a; p2 = p1; }

6. Cul es el valor final de variable a?

#include <stdio.h> #include <conio.h> void main() { int a; int *b; a = 10; b = &a; *b += 5; }

7. Por qu el siguiente cdigo est mal?


#include <stdio.h> void main() { int *a; *a = 5; }

8. Comente cada lnea del siguiente cdigo. Indique que imprimen las funciones printf(). Implemente el programa y verifique.
#include <stdio.h> void main(void) { int a, b, c; int *p1, *p2; void *p; p1 = &a; *p1 = 1; p2 = &b; *p2 = 2; p1 = p2; *p1 = 0; p2 = &c; *p2 = 3; printf("%d %d %d\n", a, b, c); p = &p2; *p2 = 1; printf("%d %d %d\n", a, b, c); }

9. Indique cul de los siguientes programas es el correcto y diga por qu?


#include <stdio.h> int main() { int vector[]={12, 10,15}; int i, *pvector; pvector = vector; for( i=0;i<3; i++ ) { printf(El elemeto %d pvector++; } return 0; }

es %d: ", i, *pvector);

#include <stdio.h> int main() { int vector[]={12,10,15}; int i, *pvector; pvector = vector; for( i=0;i<3; i++ ) { printf(El elemeto %d vector++; } return 0; } #include <stdio.h> int main() { int vector[]={12,10,15}; int i, *pvector; pvector = vector; for( i=0;i<3; i++ ) printf(El elemeto %d return 0; }

es %d: ", i, *vector);

es %d: ", i, *(pvector+i));

1. Introduzca dos nmeros enteros por teclado. Realice las operaciones de suma, multiplicacin, divisin y diferencia utilizando punteros. 2. Realice un programa para sumar las componentes de un vector de 4 elementos empleando un puntero al vector. (Ejemplo: [1 2 3 4 ] [3 7 ] ) 3. Dado un vector cualquiera con 5 elementos. Imprima en orden inverso los componentes. Utilice un puntero. 4. Dado un vector con un nmero arbitrario de elementos, cuente los dgitos pares. Utilice punteros. 5. Dada la frase: Programar en Lenguaje C durante las vacaciones utilice un puntero que contar las veces que se repite la letra u.
6.

Introduzca un vector de 5 elementos. Halle el valor mximo del vector. SOLAMENTE UTILIZANDO PUNTEROS

Funciones de vectores y cadenas:


1. Vectores 1. Realice una funcin para calcular el valor medio de elementos de un vector y el valor mximo y mnimo.
float CalVector (float vector[], int dimension, int *max, int *min);

2. Producto Escalar. Realice un programa para calcular el producto escalar de dos vectores introducidos por el usuario. Para ello programe una funcin con el siguiente prototipo:
void PEsc(float vector1[], float vector2[], int dimension, int *pe);

3. Puntos del plano. Dados dos puntos en el espacio cuyas coordenadas son introducidas por el usuario en un vector como el siguiente float coord[4], se pide: a) Realizar una funcin para calcular la distancia entre los puntos. b) Realizar una funcin que verifique que los puntos estn en primer y tercer cuadrante. 4. Ordeno. Introduzca un vector de 4 elementos realice una funcin para intercambiar el orden de los elementos de manera descendente. 5. Par o Impar? Introduzca un vector de 5 elementos. Realice una funcin para detectar si los elementos son pares o impares. Recuerde que la funcin debe ser paso por valor. 6. Imprimo al revs. Introduzca una palabra por teclado y realice una funcin para imprimirla al revs. 7. Cuento Vocales. Defina la siguiente frase: En verano no planeo programar en Lenguaje C. Realice una funcin que permita contar la cantidad de vocales que tiene la frase. 8. Cuento A. 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. void cuentoA(char cad[], int *cantA); 9. Formato. 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().
NOTA: No se pueden utilizar funciones de string.h

10. Imprimo Impares. 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[]); 11. Miro Cadena. 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 _ .

void mirocadena (char cad[], int *veces); 12. Convierte. 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. void convierte (int,int *,int *,int *); 13. A Maysculas. 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. void cambiar_a_mayus(char* cadena); 14. Absoluto. 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.

15. Permuto. Realice una funcin para permutar el valor de dos variables enteras introducidas en el programa principal. void Permuto(int *, int *);

Paso de Estructuras a Funciones (paso por valor)


1. Imprime datos. Escriba un programa que contenga una funcin que permita imprimir una estructura como la mostrada a continuacin y que el usuario debe inicializar en el main() por teclado. struct datos { char nombreCliente[15]; int cuenta; float saldo; }persona; La funcin tendr el siguiente prototipo. void mostrar(struct datos x); 2. Copia de Seguridad. Una empresa automotriz desea realizar un programa para realizar copia de seguridad y actualizacin de datos. Los datos se guardan en una estructura como la siguiente. typedef struct { char codigo; float precio; int uniVendidas; float ganancia; } vehiculos;

Inicialice la estructura en el programa principal y realice una funcin que permita actualizar las unidades vendidas y las ganancias de la empresa. Luego realice otra funcin para realizar una copia de seguridad de la estructura. int ActulizaUnidades (vehiculos deportivos); int ActualizaGanancia (vehiculos deportivos); void CopiaSegu (vehiculos deportivos) 3. Media de Temperaturas. En una estacin meteorolgica de la Comunidad de Madrid desea implementar un programa informtico para calcular la media de temperaturas mensuales para luego calcular la media anual. Los datos estn almacenados en una estructura como la siguiente. struct datos{ float Tmensual[12]; float Tmedia; }TComMdrd; Realice una funcin que permita calcular el valor medio anual. Prototipo: float Tmedia (struct datos Tempe);

4. Puntos. Define la estructura struct punto con dos coordenadas x e y de tipo float. El usuario debe introducir los datos de dos puntos por pantalla sobre dos estructuras. Escribe una funcin con el siguiente prototipo que devuelva la distancia entre ambos

puntos y en qu cuadrante est cada uno. Finalmente la funcin main debe imprimir tanto la distancia como los cuadrantes para los puntos propuestos. float funcionPuntos (punto punto1, punto punto2, int *cuad1, int *cuad2); 5. Contactos. Define la estructura struct contacto con los campos nombre, e-mail, mes y ao de nacimiento. Escribe una funcin main que lea los datos de dos contactos en dos estructuras, y se los pase a una funcin que se encargue de comparar quin de los dos es mayor. Esta funcin devolver tres posibles resultados: 1 si el primero es mayor que el segundo; 0 si ambos nacieron en el mismo mes y ao; 2 si el segundo es mayor que el primero. La funcin main debe imprimir la informacin del contacto de mayor edad.

6. Empleados. Define la estructura struct empleado con los campos cdigo de empleado, categora y horas trabajadas. Escribe una funcin main que lea los datos de un empleado (cdigo, categora y horas trabajadas) y le pase esa estructura a una funcin para calcular el sueldo segn esta tabla: Categora A 27.5 /h. Categora B 20 /h. Categora C 18.2 /h. Finalmente la funcin main debe imprimir el sueldo de dicho empleado.

Vous aimerez peut-être aussi