Lab. Programación Guión 8 – nº 22

Escribir una función que reciba un vector de números enteros.

La función nos deberá devolver como valor de retorno, la media aritmética de los números del vector recibido.

El prototipo de la función podrá ser: float media_vector (int *la, int dim);

Construir un programa para poder llamar a la función y comprobar su correcto comportamiento.

//Ejercicio propuesto: guión 8 nº22
//Abilio Almeida Eiroa

#include 
#define DIMAX 30

#define LINUX 1
#define WINDOWS 0
#define EQUIPO LINUX //---------------->>> Cambiar por tu plataforma!!!
#if (EQUIPO == LINUX)
    #include 
    #define BORRA_PANTALLA system("clear")
    #define PARAR printf("\nPresiona una tecla para continuar...");fflush(stdin);getchar()
#elif (EQUIPO == WINDOWS)
    #include 
    #define PARAR system("pause")
    #define BORRA_PANTALLA system("cls")
#endif

float media_vector(int *, int);

int main() {
	//Calcular media arigmética de un vector en una función:
	//ESTE PROGRAMA PEDIRÁ EL VECTOR AL USER EN LA FUNCIÓN MAIN:
	int vector[DIMAX], i, dim_max;
	printf("Cuantos elementos quieres introducir: ");
	scanf("%d", &dim_max);
	for(i=0; i
					

Lab. Programación Guión 8 – nº 12 Apartado 3

Diseñar una función que calcule la suma de la serie

1 + x2 + x3 + x4 + … + xn

El valor de x y n se recibirá como parámetros.

Deberá crearse un pequeño programa que la llame para poder probar su correcto funcionamiento.

//Ejercicio propuesto: guión 8 nº16 Apartado 3
//Abilio Almeida Eiroa

#include 
#include 

#define LINUX 1
#define WINDOWS 0
#define EQUIPO LINUX //---------------->>> Cambiar por tu plataforma!!!
#if (EQUIPO == LINUX)
    #include 
    #define BORRA_PANTALLA system("clear")
    #define PARAR printf("\nPresiona una tecla para continuar...");fflush(stdin);getchar()
#elif (EQUIPO == WINDOWS)
    #include 
    #define PARAR system("pause")
    #define BORRA_PANTALLA system("cls")
#endif

float suma(int, int);

int main() {
	//Función que calcula 1 + x2 + x3 + ... + xn:
	int x, n;
	printf("Introduce el máximo exponente: ");
	scanf("%d", &n);
	printf("Introduce el valor de x: ");
	scanf("%d", &x);
	printf("\n");
	printf("==============================\n");
	printf("El total de la función: \"1 + x2 + x3 + ... + xn \"\n");
	printf("para x = %d\n", x);
	printf("y      n = %d\n", n);
	printf("==============================\n");
    printf("                        %.2f\n", suma(x, n));
    printf("==============================\n");
    
    PARAR;
    return 0;
}

float suma(int num, int exp) {
	int i;
	float total=0;
	for(i=2; i<=exp; i++) {
		total += pow(num, i);
	}
	total++;
	return total;
}

Lab. Programación Guión 8 – nº 12 Apartado 1

Diseñar una función que calcule la suma de los n primeros números enteros.

1 + 2 + 3 + … + n

Deberá crearse un pequeño programa que la llame para poder probar su correcto funcionamiento.

//Ejercicio propuesto: guión 8 nº16 Apartado 1
//Abilio Almeida Eiroa

#include 

#define LINUX 1
#define WINDOWS 0
#define EQUIPO LINUX //---------------->>> Cambiar por tu plataforma!!!
#if (EQUIPO == LINUX)
    #include 
    #define BORRA_PANTALLA system("clear")
    #define PARAR printf("\nPresiona una tecla para continuar...");fflush(stdin);getchar()
#elif (EQUIPO == WINDOWS)
    #include 
    #define PARAR system("pause")
    #define BORRA_PANTALLA system("cls")
#endif

int suma(int);

int main() {
	//Calcula la suma de los primeros n numeros enteros, a introducir ese "n" como num_max.
    int num_max;
    printf("Introduce el número máximo a sumar: ");
    scanf("%d", &num_max);
    printf("La suma total es de %d", suma(num_max));
    
    PARAR;
    return 0;
}

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

Lab. Programación Guión 7 – nº 8

Se dispone de un vector vletras de caracteres, cargado con los siguientes valores.
A  F  H  K  L  O  S  U  X  Z

Realizar un programa que le solicite al usuario la introducción de caracteres, simulando en entrada una tabla de 3×4. Es decir, le iremos solicitando:

Introduzca carácter [1][1]:

Introduzca carácter [1][2]:

Introduzca carácter [1][3]:

Introduzca carácter [3][3]:

Introduzca carácter [3][4]:

El programa deberá disponer de una matriz interna de punteros a char, también de dimensión 3×4, que llamaremos mapa . En cada elemento de mapa se introducirá el siguiente valor:

- Cada vez que se teclee un carácter, se buscará en vletras , y si se encuentra, en el elemento de mapa correspondiente a las coordenadas del carácter leído se introducirá la dirección del elemento de vletras .

- En caso de no encontrase se introducirá NULL.

Posteriormente el programa deberá presentar la tabla tecleada por el usuario, recorriendo la matriz mapa y mostrando el valor del elemento al que apunta cada puntero. En caso de que el puntero esté a NULL, se presentará un carácter asterisco (*)

.

//Ejercicio propuesto: guión 7 nº8
//Abilio Almeida Eiroa

#include 
#define FIL 3
#define COL 4

#define LINUX 1
#define WINDOWS 0
#define EQUIPO LINUX //---------------->>> Cambiar por tu plataforma!!!
#if (EQUIPO == LINUX)
    #include 
    #define BORRA_PANTALLA system("clear")
    #define PARAR printf("\nPresiona una tecla para continuar...");fflush(stdin);getchar()
#elif (EQUIPO == WINDOWS)
    #include 
    #define PARAR system("pause")
    #define BORRA_PANTALLA system("cls")
#endif

int main() {
	int i, b, c;
	char *mapa[FIL][COL], tmp;
	char vletras[11] = "AFHKLOSUXZ*";
	
	//Pido valores para la matriz simulada:
	printf("LLena el Vector:\n");
	for (i=0; i
					

Lab. Programación Guión 7 – nº 7

Realizar un programa que lea de teclado 15 claves enteras y las almacene en un vector. Una clave será un número entero.

El programa, al realizar la lectura de las claves deberá garantizar:

- que todas ellas se encuentran en el rango 1000 a 7000.

- que el usuario no teclea claves repetidas.

En caso contrario, se solicitaría de nuevo el tecleo de la clave. No es necesario volver a solicitar todas las claves introducidas hasta ese momento, sino sólo la última recibida que no supera las validaciones.

Posteriormente deberá mostrar ordenadas las claves introducidas, pero sin modificar el vector de claves. Para ello, se deberá utilizar un vector de punteros que apunten a cada una de las claves.

Ayuda.

La forma de rellenar el vector de punteros es comprobar de una en una, comenzando por la clave 1000 y hasta la 7000, si la clave se encuentra en el vector de claves, y si así fuera, obtenemos la dirección del elemento del vector de claves y la incluimos en el primer puntero libre del vector de punteros. Esto nos obliga a llevar un segundo índice sobre el vector de punteros que nos vaya determinando el siguiente puntero libre.

Finalmente, recorreremos el vector de punteros y presentaremos el elemento al que apunta cada uno de ellos. Así, las claves aparecerán en pantalla en orden.

//Ejercicio propuesto: guión 7 nº7
//Abilio Almeida Eiroa

#include 
#define DIMAX 15

#define LINUX 1
#define WINDOWS 0
#define EQUIPO LINUX //---------------->>> Cambiar por tu plataforma!!!
#if (EQUIPO == LINUX)
    #include 
    #define BORRA_PANTALLA system("clear")
    #define PARAR printf("\nPresiona una tecla para continuar...");fflush(stdin);getchar()
#elif (EQUIPO == WINDOWS)
    #include 
    #define PARAR system("pause")
    #define BORRA_PANTALLA system("cls")
#endif

int main() {
	int i, b, vector[DIMAX];
	int *punt[DIMAX];
	
	//Lleno el vector de 0:
	for (i=0; i 7000) {
			printf("Debe estar entre 1000 y 7000\n");
			i--;
			continue;
		}
		for (b=0; b
					

Ejercicios de Laboratorio de Programación en C de la USAL

En esta sección voy a ir subiendo todos los ejercicios que vaya haciendo de la asignatura de “Laboratorio de Programación” de la Universidad de Salamanca (en mi caso del grupo A1, el de Angélica).

Si queréis podéis descargar todos los archivos de los ejercicios que se han hecho hasta ahora en http://linfox.es/docs/C y los próximos los iré poniendo también ahí para la descarga (también comprimiré la totalidad por si queréis bajarlos todos juntos).

Y nada, este es el último ejercicio propuesto en la plataforma:

Ejercicio propuesto: guión 6A nº12

Realizar un programa que sume dos matrices bidimensionales de números reales.

El programa primeramente solicitará el número de filas y de columnas de las matrices a sumar, y posteriormente solicitará por pantalla los elementos correspondientes de las dos matrices. El programa deberá permitir trabajar con matrices de hasta 30 x 30 elementos.

//Ejercicio propuesto: guión 6A nº012
//Abilio Almeida Eiroa

#include 
#define FIL 30
#define COL 30

#define LINUX 1
#define WINDOWS 0
#define EQUIPO WINDOWS //---------------->>> Cambiar por tu plataforma!!!
#if (EQUIPO == LINUX)
    #include 
    #define BORRA_PANTALLA system("clear")
    #define PARAR printf("\nPresiona una tecla para continuar...");fflush(stdin);getchar()
#elif (EQUIPO == WINDOWS)
    #include 
    #define PARAR system("pause")
    #define BORRA_PANTALLA system("cls")
#endif

int main() {
    int i, b, filas, columnas;
    float suma[FIL][COL], tabla1[FIL][COL], tabla2[FIL][COL];
    //Carga un tabla e indica el elmento máximo y su posición, y el mínimo sin posición..
    printf("Introduce el número de filas a introducir: ");
    scanf("%d", &filas);
    printf("Introduce el número de columnas: ");
    scanf("%d", &columnas);
    printf("Carga la primera tabla:\n");
    //Cargar tabla:
    for(i=0; i