//FICHERO TABLA.H *********************************************include <stdio.h>typedef struct{float * p; // un puntero a una zona de memoria donde se almacenan los datos.int n; // indica cuántos datos existen.} TABLA; // Representa a una tabla con valores numéricos (datos de tipo float).//FICHERO MAIN.C ***********************************************int main(){int n; // Número de datos a almacenarTABLA t; // Tabla donde se van a manejar los datosfloat min, max; // Datos máximo y mínimoprintf ("Numero de elementos: ");scanf ("%d", & n); // Solicita por teclado el número de elementos de la tablacreaTabla (n, & t); // Inicializa la tabla 't' para que pueda almacenar 'n' elementosintroduceTabla (& t); // Introduce por teclado los valores que se alamacenan en la tabla 't'calculaExtremos (& t, & min, & max); // Calcula los valores mínimo y máximovisualizaExtremos (min);//,max); // Visualiza en pantalla esos extremosreturn 0;}//FICHERO TABLA.C ***********************************************#include <stdio.h>#include "tabla.h"void creaTabla (int cuantos, TABLA * pTabla)// Inicializa la estructura apuntada por 'pTabla' para que pueda almacenar 'cuantos' números reales.{(*pTabla).p = (TABLA *) malloc (cuantos * sizeof (TABLA));(*pTabla).n = cuantos;printf ("Tabla creada con %d valores.\n\n",(*pTabla).n);}void introduceTabla (TABLA * pTabla)// Solicita por teclado al usuario que introduzca todos los valores de la tabla{int i;printf("Numero de datos a introducir: %d\n", (*pTabla).n);for (i = 0; i < (*pTabla).n; i++) { printf ("Dato numero %d (posicion %d): ", i, (*pTabla).p + i); scanf ("%f", (*pTabla).p + i ); // lo q meto por teclado se asigna a la posicion indicada de la tabla. }free (pTabla);}void calculaExtremos (TABLA * pTabla, float * pMinimo, float * pMaximo)// Calcula y devuelve el valor mínimo y el valor máximo de la tabla{int i;*pMinimo = *(*pTabla).p; //pongo en el puntero del min lo que hay en el primer campo de la tabla*pMaximo = *(*pTabla).p; //idem del maximoprintf("Inicializados minimo y maximo (%f,%f)\n\n", *pMinimo, *pMaximo);for (i = 1; i < (*pTabla).n; i++)// Recorre la tabla desde la posicion 1 hasta la ultima comprobando los valores. { if ( *((*pTabla).p+i) < *pMinimo ) *pMinimo = *((*pTabla).p+i) ; if ( *((*pTabla).p+i) > *pMaximo ) *pMaximo = *((*pTabla).p+i) ; }}void visualizaExtremos (float minimo, float maximo)// Visualiza en pantalla un mensaje para mostrar estos valores mínimo y máximo{printf ("Minimo: %f \n", minimo);printf ("Maximo: %f \n\n", maximo);}