diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..1bddc95 --- /dev/null +++ b/Makefile @@ -0,0 +1,35 @@ +#Makefile for Array (sirve ya para todos los programas) + +# targets que no generan files +.PHONY = all CLEAN + +#Variables: +CC = gcc +world := hola #variable estatica +CFLAGS = -C0 -s -lm +linkers = -lm -lpthread + +#Functions +deps = $(wildcard *.c) #dependencias +depsh = $(wildcard *.h) +BINS = $(deps: %.c = %.o) + + +all: ${BINS} TDA_Statistics + + +BINS: $(deps) + ${CC} -c $^ ${CFLAGS} + @echo "Generating binary objects" + + +TDA_Statistics: ${BINS} + ${CC} -o $@ $^ ${linkers} + @echo "Generating excecutable" + +PRINT: + @echo $(deps) $(BINS) + +CLEAN: + rm -rvf *.o TEST_ARRAY + @echo "Removing all binary objects and excecutables" diff --git a/TDA_Statistics b/TDA_Statistics new file mode 100644 index 0000000..8de171b Binary files /dev/null and b/TDA_Statistics differ diff --git a/TDA_Statistics.c b/TDA_Statistics.c new file mode 100644 index 0000000..845b3d2 --- /dev/null +++ b/TDA_Statistics.c @@ -0,0 +1,60 @@ +/* + * Examen Parcial 1 + * @ Taller de Desarrollo de Aplicaciones + * @ copyright 2021 + * @ author: Vergara Mendoza Monica Ivette + * @ version 25/03/2021 +*/ + +#include "main.h" +#include "calculos.h" +#include "files.h" + +int main(void){ + char nombreArchivo[50]; + FILE * arch1, * arch2, * arch3; + int cont = 0,i,j, mod; + float temp, media, mediana, desvE, Rang, DistInt; + float *arr = malloc(100 * sizeof(float)); + + printf("Inserte el nombre del archivo a leer: "); + scanf("%s", nombreArchivo); + + arch1 = fopen(nombreArchivo, "r"); + + for(cont = 0; cont < 100; cont ++){ + fscanf(arch1, "%f, %f", &arr[cont], &arr[cont]); /*Extraer datos del archivo */ + } + + for(i = 0; i < 99; i++){ /*Ordenar el array*/ + for(j = 0; j < 99 - i; j++){ + if(arr[j]> arr[j+1]){ + temp = arr[j+1]; + arr[j+1] = arr[j]; + arr[j] = temp; + } + } + } + + printf("\n ----Realizando calculos---\n"); + + mediana = median( arr); + media = mean( arr); + mod = mode(arr); + + desvE = stdev(arr,media); + Rang = rango(arr); + DistInt = IQR(arr); + + arch2 = fopen("TDA_Statistics.csv", "w"); + arch3 = fopen("gráfico.csv", "w"); + + imprimirRes(mediana,media,mod,desvE,Rang,DistInt,arch2); + imprimirHist(arr,arch3); + + free(arr); + fclose(arch1); + fclose(arch2); + fclose(arch3); + printf("Fin de proceso\n"); +} diff --git a/TDA_Statistics.csv b/TDA_Statistics.csv new file mode 100644 index 0000000..29ae941 --- /dev/null +++ b/TDA_Statistics.csv @@ -0,0 +1,6 @@ +Mediana: , 4.913121 +Media: , -26119268360328445641621504.000000 +Moda: , 5 +Desviacion Estandar: , 4.913121 +Rango: , 2.751640 +Distancia intercuartíl: , 0.613733 diff --git "a/Vergara Examen 1 TDA Documentaci\303\263n.pdf" "b/Vergara Examen 1 TDA Documentaci\303\263n.pdf" new file mode 100644 index 0000000..a04bd07 Binary files /dev/null and "b/Vergara Examen 1 TDA Documentaci\303\263n.pdf" differ diff --git a/calculos.c b/calculos.c new file mode 100644 index 0000000..0fc68d8 --- /dev/null +++ b/calculos.c @@ -0,0 +1,74 @@ +/* + * Examen Parcial 1 + * @ Taller de Desarrollo de Aplicaciones + * @ copyright 2021 + * @ author: Vergara Mendoza Monica Ivette + * @ version 25/03/2021 +*/ +#include "main.h" +#include "calculos.h" +#include "files.h" + +float median(float array[]){ + float res; + res = ((array[44] + array[43])/2); + return res; +} + +int mode(float array[]){ + int res,cont,x,max; + for(cont = 0; cont < 100; cont ++){ + int num = 0; + for(x = 0; x < 100; x ++){ + if((int)array[x] == (int)array[cont]){ + num ++; + } + } + if(num > max){ + max = num; + res = (int)array[cont]; + } + } + return res; +} + +float mean(float array[]){ + float res; + int cont; + for(cont = 0; cont < 100; cont ++){ + res += array[cont]; + } + res /= 100; + + + return res; +} + +float stdev(float array[], float mean){ + float res; + int cont; + + for(cont = 0; cont < 100; cont ++){ + res += pow(array[cont]-mean,2); + } + res /= 100; + + return res; +} + +float rango(float array[]){ + float res; + + res = array[99] - array[0]; + + return res; +} + +float IQR(float array[]){ + float res, Q1, Q3; + Q1 = (array[10]+array[11])/2; + Q3 = (array[36]+array[37])/2; + res = Q3 - Q1; + + return res; +} diff --git a/calculos.h b/calculos.h new file mode 100644 index 0000000..4cbc62b --- /dev/null +++ b/calculos.h @@ -0,0 +1,97 @@ +/* + * Examen Parcial 1 + * @ Taller de Desarrollo de Aplicaciones + * @ copyright 2021 + * @ author: Vergara Mendoza Monica Ivette + * @ version 25/03/2021 +*/ + +//biblioteca de procesos + +#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 + * datos 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 + * rango- consigue el rango total de los datos + * @params + * arr[]- los datos del csv (ya ordenados) + * @return + * res- el resultado del proceso + */ +EXTERN float rango(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 */ diff --git a/data.csv b/data.csv new file mode 100644 index 0000000..a44e9e8 --- /dev/null +++ b/data.csv @@ -0,0 +1,101 @@ +0,5.077850806 +1,5.11361086 +2,5.013413304 +3,4.7066951 +4,4.976198376 +5,4.687136226 +6,5.124400784 +7,5.091652721 +8,4.626762324 +9,5.35344503 +10,5.031065345 +11,4.162632474 +12,5.099215149 +13,4.314255758 +14,5.071030028 +15,5.146366446 +16,5.286848671 +17,5.132360742 +18,5.04395336 +19,5.636707268 +20,4.777943651 +21,4.89574049 +22,5.169317399 +23,4.893662278 +24,4.417269492 +25,5.076816536 +26,4.955695648 +27,4.815426492 +28,5.126990887 +29,5.111338314 +30,5.478111414 +31,4.925767003 +32,5.042099781 +33,4.676226811 +34,5.079265995 +35,4.424209541 +36,5.028716159 +37,4.933538801 +38,4.978475742 +39,4.798586263 +40,4.695443163 +41,4.923005744 +42,5.167948946 +43,5.139372134 +44,4.670964362 +45,4.903235874 +46,5.202417898 +47,5.190025396 +48,5.076624563 +49,4.501765132 +49,7.620810745 +50,5.408775063 +51,9.249027082 +52,3.966756305 +53,8.117753176 +54,7.88119561 +55,6.046796973 +56,4.41112679 +57,9.098134983 +58,9.863904002 +59,9.761802314 +60,7.097391651 +61,3.971288979 +62,4.353357349 +63,7.430117561 +64,9.040893509 +65,7.747518755 +66,9.144150408 +67,7.484194482 +68,5.534374743 +69,11.56408759 +70,8.847246176 +71,8.055825536 +72,5.90986268 +73,11.47067506 +74,6.626437363 +75,8.558101505 +76,10.03325002 +77,2.416308418 +78,5.889250662 +79,7.265120837 +80,5.973586022 +81,7.253980589 +82,7.256455002 +83,3.810614928 +84,6.538020094 +85,8.079135636 +86,13.06712025 +87,7.553353603 +88,6.712603915 +89,5.221458727 +90,6.000437102 +91,7.696862623 +92,6.81870698 +93,9.896107712 +94,4.389514239 +95,5.874243192 +96,7.455989044 +97,7.198366995 +98,6.126639674 +99,11.76199469 diff --git a/files.c b/files.c new file mode 100644 index 0000000..926d2a9 --- /dev/null +++ b/files.c @@ -0,0 +1,30 @@ +/* + * Examen Parcial 1 + * @ Taller de Desarrollo de Aplicaciones + * @ copyright 2021 + * @ author: Vergara Mendoza Monica Ivette + * @ version 25/03/2021 +*/ + +#include "main.h" +#include "calculos.h" +#include "files.h" + +void imprimirRes(float mediana,float media,int mod,float stDev,float Rang,float DistInt,FILE * arch2){ + printf("\n...Imprimiendo resultados en archivo TDA_Statistics.csv\n"); + 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 < 100; cont ++){ + fprintf(arch3,"%d ,%d\n",cont, (int)arr[cont]); + } + printf("\n...Imprimiendo datos para gráfico\n"); +} diff --git a/files.h b/files.h new file mode 100644 index 0000000..eaa8907 --- /dev/null +++ b/files.h @@ -0,0 +1,25 @@ +/* + * Examen Parcial 1 + * @ Taller de Desarrollo de Aplicaciones + * @ copyright 2021 + * @ author: Vergara Mendoza Monica Ivette + * @ version 25/03/2021 +*/ +#ifndef files_h +#define files_h + +#include +#include + +#ifndef files_IMPORT + #define EXTERN +#else + #define EXTERN extern +#endif + +EXTERN void imprimirRes(float mediana,float media,int mod,float stDev,float Rang,float DistInt,FILE * arch2); + + +EXTERN void imprimirHist(float arr[],FILE * arch3); + +#endif diff --git "a/gr\303\241fico.csv" "b/gr\303\241fico.csv" new file mode 100644 index 0000000..bd5ff62 --- /dev/null +++ "b/gr\303\241fico.csv" @@ -0,0 +1,100 @@ +0 ,2 +1 ,3 +2 ,3 +3 ,3 +4 ,4 +5 ,4 +6 ,4 +7 ,4 +8 ,4 +9 ,4 +10 ,4 +11 ,4 +12 ,4 +13 ,4 +14 ,4 +15 ,4 +16 ,4 +17 ,4 +18 ,4 +19 ,4 +20 ,4 +21 ,4 +22 ,4 +23 ,4 +24 ,4 +25 ,4 +26 ,4 +27 ,4 +28 ,4 +29 ,4 +30 ,5 +31 ,5 +32 ,5 +33 ,5 +34 ,5 +35 ,5 +36 ,5 +37 ,5 +38 ,5 +39 ,5 +40 ,5 +41 ,5 +42 ,5 +43 ,5 +44 ,5 +45 ,5 +46 ,5 +47 ,5 +48 ,5 +49 ,5 +50 ,5 +51 ,5 +52 ,5 +53 ,5 +54 ,5 +55 ,5 +56 ,5 +57 ,5 +58 ,5 +59 ,5 +60 ,5 +61 ,5 +62 ,5 +63 ,5 +64 ,6 +65 ,6 +66 ,6 +67 ,6 +68 ,6 +69 ,6 +70 ,6 +71 ,7 +72 ,7 +73 ,7 +74 ,7 +75 ,7 +76 ,7 +77 ,7 +78 ,7 +79 ,7 +80 ,7 +81 ,7 +82 ,7 +83 ,7 +84 ,8 +85 ,8 +86 ,8 +87 ,8 +88 ,8 +89 ,9 +90 ,9 +91 ,9 +92 ,9 +93 ,9 +94 ,9 +95 ,9 +96 ,10 +97 ,11 +98 ,11 +99 ,13 diff --git a/main.h b/main.h new file mode 100644 index 0000000..ad7d6bb --- /dev/null +++ b/main.h @@ -0,0 +1,25 @@ +/* + * Examen Parcial 1 + * @ Taller de Desarrollo de Aplicaciones + * @ copyright 2021 + * @ author: Vergara Mendoza Monica Ivette + * @ version 25/03/2021 +*/ + +//Biblioteca principal + +#ifndef main_h +#define main_h + +#include +#include + +#ifndef main_IMPORT + #define EXTERN +#else + #define EXTERN extern +#endif + + + +#endif