//FICHERO TABLA.H ********************************************* include 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 almacenar TABLA t; // Tabla donde se van a manejar los datos float min, max; // Datos máximo y mínimo printf ("Numero de elementos: "); scanf ("%d", & n); // Solicita por teclado el número de elementos de la tabla creaTabla (n, & t); // Inicializa la tabla 't' para que pueda almacenar 'n' elementos introduceTabla (& t); // Introduce por teclado los valores que se alamacenan en la tabla 't' calculaExtremos (& t, & min, & max); // Calcula los valores mínimo y máximo visualizaExtremos (min,max); // Visualiza en pantalla esos extremos return 0; } //FICHERO TABLA.C *********************************************** #include #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 maximo printf("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); }