diff --git a/Examen1/Examen 1 TDA Juan Carlos Garcia.pdf b/Examen1/Examen 1 TDA Juan Carlos Garcia.pdf new file mode 100644 index 0000000..fa8b389 Binary files /dev/null and b/Examen1/Examen 1 TDA Juan Carlos Garcia.pdf differ diff --git a/Examen1/files.c b/Examen1/files.c new file mode 100644 index 0000000..2d8e916 --- /dev/null +++ b/Examen1/files.c @@ -0,0 +1,29 @@ +// +// template.c +// +// +// Created by Juan Carlos Garcia on 08/10/20. +// + +#include "main.h" +#include "procesos.h" +#include "files.h" + +void imprimirRes(float mediana,float media,int mod,float stDev,float Rang,float DistInt,FILE * arch2){ + fprintf(arch2, "mediana: , %f\n",mediana); + fprintf(arch2, "media: , %f\n",media); + fprintf(arch2, "moda: , %d\n",mod ); + fprintf(arch2, "Desviacion Estandar: , %f\n",mediana ); + fprintf(arch2, "Rango: , %f\n",Rang ); + fprintf(arch2, "Distancia intercuartíl: , %f\n",DistInt ); +} + +void imprimirHist(float arr[],FILE * arch3){ + int cont; + + for(cont = 0; cont < 50; cont ++){ + fprintf(arch3,"%d ,%d\n",cont, (int)arr[cont]); + } + + +} diff --git a/Examen1/files.h b/Examen1/files.h new file mode 100644 index 0000000..ddb4f20 --- /dev/null +++ b/Examen1/files.h @@ -0,0 +1,49 @@ +// +// template.h +// +// +// Created by Juan Carlos Garcia on 08/10/20. +// + +#ifndef files_h +#define files_h + +#include +#include + +#ifndef files_IMPORT + #define EXTERN +#else + #define EXTERN extern +#endif + +/* + * @function + * imprimirRes- manda los datos procesados a un .csv + * @params + * mediana- la mediana de los datos + * media- la media de los datos (promedio) + * mod- la moda de los datos + * stDev- la desviacion estandar de los datos + * Rang- el rango de los datos + * DistInt- la distancia intercuartíl de los datos + * arch2- archivo a donde van los datos + * @return + * N/A + */ +EXTERN void imprimirRes(float mediana,float media,int mod,float stDev,float Rang,float DistInt,FILE * arch2); + + + +/* + * @function + * imprimirHist- manda los datos a un .csv para conseguir el histograma + * @params + * arr[]- arreglo con los datos + * arch3- el archivo a donde se va a imprimir + * @return + * N/A + */ +EXTERN void imprimirHist(float arr[],FILE * arch3); + +#endif /* files_h */ diff --git a/Examen1/main.c b/Examen1/main.c new file mode 100644 index 0000000..ac8d913 --- /dev/null +++ b/Examen1/main.c @@ -0,0 +1,51 @@ +// +// template.c +// +// +// Created by Juan Carlos Garcia on 08/10/20. +// + +#include "main.h" +#include "procesos.h" +#include "files.h" + +int main(void){ + FILE * arch1, * arch2, * arch3; + int cont = 0,i,j, mod; + float temporario, media, mediana, stDev, Rang, DistInt; /*Declaración de variables*/ + float *arr = malloc(50 * sizeof(float)); + + arch1 = fopen("data1.csv", "r"); + arch2 = fopen("dataStatistic.csv", "w"); /*Definicion de archivos*/ + arch3 = fopen("Histograma.csv", "w"); + + for(cont = 0; cont < 50; cont ++){ + fscanf(arch1, "%f, %f", &arr[cont], &arr[cont]); /*Extraer datos de data1.csv */ + } + + for(i = 0; i < 49; i++){ /*Ordenar el array*/ + for(j = 0; j < 49 - i; j++){ + if(arr[j]> arr[j+1]){ + temporario = arr[j+1]; + arr[j+1] = arr[j]; + arr[j] = temporario; + }//end if + }//end for (j) + }//end for (i) + + mediana = median( arr); /*conseguir la mediana*/ + media = mean( arr); /*conseguir la media*/ + mod = mode(arr); /*conseguir la moda*/ + + stDev = stdev(arr,media); /*conseguir la desviación estandar*/ + Rang = range(arr); /*conseguir el rango*/ + DistInt = IQR(arr); /*conseguir la distancia intercuartíl*/ + + imprimirRes(mediana,media,mod,stDev,Rang,DistInt,arch2); /*imprimir los datos a archivos csv*/ + imprimirHist(arr,arch3); + + free(arr); + fclose(arch1); + fclose(arch2);//cerrar archivos y liberar memoria + fclose(arch3); +} diff --git a/Examen1/main.h b/Examen1/main.h new file mode 100644 index 0000000..f26d72d --- /dev/null +++ b/Examen1/main.h @@ -0,0 +1,22 @@ +// +// template.h +// +// +// Created by Juan Carlos Garcia on 08/10/20. +// + +#ifndef main_h +#define main_h + +#include +#include + +#ifndef main_IMPORT + #define EXTERN +#else + #define EXTERN extern +#endif + + + +#endif /* main_h */ diff --git a/Examen1/procesos.c b/Examen1/procesos.c new file mode 100644 index 0000000..5424118 --- /dev/null +++ b/Examen1/procesos.c @@ -0,0 +1,74 @@ +// +// template.c +// +// +// Created by Juan Carlos Garcia on 08/10/20. +// + +#include "main.h" +#include "procesos.h" +#include "files.h" + +float median(float array[]){ + float res; + res = ((array[24] + array[23])/2); + return res; +}//end median + +int mode(float array[]){ + int res,cont,x,max; + for(cont = 0; cont < 50; cont ++){ + int num = 0; + for(x = 0; x < 50; x ++){ + if((int)array[x] == (int)array[cont]){ + num ++; + }//end if + }//end for (x) + if(num > max){ + max = num; + res = (int)array[cont]; + }//end if + }//end for (cont) + return res; +}//end mode + +float mean(float array[]){ + float res; + int cont; + for(cont = 0; cont < 50; cont ++){ + res += array[cont]; + }//end for + res /= 50; + + + return res; +}//end mean + +float stdev(float array[], float mean){ + float res; + int cont; + + for(cont = 0; cont < 50; cont ++){ + res += pow(array[cont]-mean,2); + } + res /= 50; + + return res; +}//end stdev + +float range(float array[]){ + float res; + + res = array[49] - array[0]; + + return res; +}//end range + +float IQR(float array[]){ + float res, Q1, Q3; + Q1 = (array[10]+array[11])/2; //calcular Q1 + Q3 = (array[36]+array[37])/2; //calcular Q3 + res = Q3 - Q1; + + return res; +}//end IQR diff --git a/Examen1/procesos.h b/Examen1/procesos.h new file mode 100644 index 0000000..2ec7359 --- /dev/null +++ b/Examen1/procesos.h @@ -0,0 +1,94 @@ +// +// template.h +// +// +// Created by Juan Carlos Garcia on 08/10/20. +// + +#ifndef procesos_h +#define procesos_h + +#include +#include +#include + +#ifndef procesos_IMPORT + #define EXTERN +#else + #define EXTERN extern +#endif + +/* + * @function + * median- calcula la mediana del array + * @params + * arr[]- los datos del csv (ya ordenados) + * @return + * res- el resultado del proceso + */ +EXTERN float median(float array[]); + + + +/* + * @function + * mean- consigue el promedio de los datos + * @params + * arr[]- los datos del csv (ya ordenados) + * @return + * res- el resultado del proceso + */ +EXTERN float mean(float array[]); + + + +/* + * @function + * mode- consigue la moda de los datos + * @params + * arr[]- los datos del csv (ya ordenados) + * @return + * res- el resultado del proceso + */ +EXTERN int mode(float array[]); + + + +/* + * @function + * stdev-usa los datos y el promedio para conseguir la desviacion estandar + * @params + * arr[]- los datos del csv (ya ordenados) + * mean- el promedio de los datos + * @return + * res- el resultado del proceso + */ +EXTERN float stdev(float array[], float mean); + + +/* + * @function + * range- consigue el rango total de los datos + * @params + * arr[]- los datos del csv (ya ordenados) + * @return + * res- el resultado del proceso + */ +EXTERN float range(float array[]); + + + +/* + * @function + * IQR- calcula la distancia intercuartil de los datos (calcula Q1 y Q3 antes) + * @params + * arr[]- los datos del csv (ya ordenados) + * @return + * res- el resultado del proceso + */ +EXTERN float IQR(float array[]); + + + + +#endif /* procesos_h */