diff --git a/Examen1/.DS_Store b/Examen1/.DS_Store new file mode 100644 index 0000000..f7042bb Binary files /dev/null and b/Examen1/.DS_Store differ diff --git a/Examen1/Bernardo/.DS_Store b/Examen1/Bernardo/.DS_Store new file mode 100644 index 0000000..05ca946 Binary files /dev/null and b/Examen1/Bernardo/.DS_Store differ diff --git a/Examen1/Bernardo/.Hola b/Examen1/Bernardo/.Hola new file mode 100755 index 0000000..a7ee13a Binary files /dev/null and b/Examen1/Bernardo/.Hola differ diff --git "a/Examen1/Bernardo/Documentaci\303\263n.docx" "b/Examen1/Bernardo/Documentaci\303\263n.docx" new file mode 100644 index 0000000..976d23e Binary files /dev/null and "b/Examen1/Bernardo/Documentaci\303\263n.docx" differ diff --git a/Examen1/Bernardo/Examen b/Examen1/Bernardo/Examen new file mode 100755 index 0000000..4a19363 Binary files /dev/null and b/Examen1/Bernardo/Examen differ diff --git a/Examen1/Bernardo/controlador.c b/Examen1/Bernardo/controlador.c new file mode 100644 index 0000000..41118b0 --- /dev/null +++ b/Examen1/Bernardo/controlador.c @@ -0,0 +1,53 @@ +// +// controlador.c +// +// +// Created by Bernardo García 8/oct/2020 +// +//#include "controlador.h" +#include "controlador.h" + +int main() +{ + controlador(); +} + +void controlador(){ + float med, mod, medi, desvi, min, max, dist; + int size=0; + char archivo[20]; + ERROR_CODE validar; + float *arreglo=NULL; + do{ + vista_archivo(archivo); + validar=seguridad_validar(archivo); + if(validar==INVALID) + vista_error(); + }while(validar==INVALID); + + FILE* data=pipesOpenFile(archivo); + arreglo=memoriaNuevoMalloc(data, &size); + rewind(data); + pipesObtenerValores(arreglo, data); + ordenar(arreglo, size); + med=media(arreglo, size); + mod=moda(arreglo, size); + medi=mediana(arreglo, size); + desvi=desviacion(arreglo, med, size); + min=minimo(arreglo, size); + max=maximo(arreglo, size); + dist=distancia(arreglo, size); + FILE *info=pipesWriteNewFile("data_statistic.txt"); + pipesWrite(info, med, mod, medi, desvi, min, max, dist); + cast(arreglo, size); + pipesCloseFile(info); + FILE *especial=pipesWriteNewFile("data_plot.csv"); + pipesWritePlot(especial, arreglo, size); + FILE* plot=pipesOpenGnuPlot(); + pipesGraphGnuPlot(plot, "data_plot.csv"); + free(arreglo); + fclose(plot); + pipesCloseFile(data); + pipesCloseFile(especial); + +} diff --git a/Examen1/Bernardo/controlador.h b/Examen1/Bernardo/controlador.h new file mode 100644 index 0000000..b723a51 --- /dev/null +++ b/Examen1/Bernardo/controlador.h @@ -0,0 +1,35 @@ +// +// controlador.h +// +// +// Created by Bernardo García 8/oct/2020 +// +#include +#include +#include +#include +#include "vista.h" +#include "modelo.h" +#include "pipes.h" +#include "seguridad.h" +#include "memoria.h" +#ifndef controlador_h +#define controlador_h +#ifndef controlador_IMPORT + #define EXTERN +#else + #define EXTERN extern +#endif + + +/* Función del módulo. */ +/* +* El módulo controlador se encarga de controlar el flujo de programa, ya que ésta es la encargada de conectar a los módulos de vista y modelo, así como revisar las validaciones. +* +* +*/ +void controlador(); + +#undef controlador_IMPORT +#undef EXTERN +#endif /*controlador.h*/ diff --git a/Examen1/Bernardo/data.csv b/Examen1/Bernardo/data.csv new file mode 100644 index 0000000..ba235b9 --- /dev/null +++ b/Examen1/Bernardo/data.csv @@ -0,0 +1,50 @@ +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 \ No newline at end of file diff --git a/Examen1/Bernardo/data_plot.csv b/Examen1/Bernardo/data_plot.csv new file mode 100644 index 0000000..8ec5722 --- /dev/null +++ b/Examen1/Bernardo/data_plot.csv @@ -0,0 +1,2 @@ +4,23 +5,27 diff --git a/Examen1/Bernardo/data_statistic.txt b/Examen1/Bernardo/data_statistic.txt new file mode 100644 index 0000000..9eb7564 --- /dev/null +++ b/Examen1/Bernardo/data_statistic.txt @@ -0,0 +1,8 @@ +Media: 4.955432 +Moda: 4.162632 +Mediana: 5.031065 +Desviacion: 0.280655 +Minimo: 4.162632 +Maximo: 5.636707 +Rango: 1.474075 +Distancia: 0.554859 diff --git a/Examen1/Bernardo/memoria.c b/Examen1/Bernardo/memoria.c new file mode 100644 index 0000000..c65d021 --- /dev/null +++ b/Examen1/Bernardo/memoria.c @@ -0,0 +1,12 @@ +#include "memoria.h" + +float *memoriaNuevoMalloc(FILE* file, int *size){ + int Basura; + float Basura2; + float *buffer=NULL; + while(fscanf(file, "%d,%f", &Basura, &Basura2)==2){ + *size=*size+1; + } + buffer = malloc(*size+1); + return buffer; +} diff --git a/Examen1/Bernardo/memoria.h b/Examen1/Bernardo/memoria.h new file mode 100644 index 0000000..53b9929 --- /dev/null +++ b/Examen1/Bernardo/memoria.h @@ -0,0 +1,43 @@ +// +// memoria.h +// +// +// Created by Bernardo García 8/oct/2020 +// + +#ifndef memoria_h +#define memoria_h + +/* +* System headers required by the following declarations +* (the implementation will import its specific dependencies): +*/ + +#include +#include +#include +/* +* Application specific headers required by the following declarations +* (the implementation will import its specific dependencies): +*/ + +/* Constants declarations. */ + +/* Set EXTERN macro: */ + +#ifndef memoria_IMPORT + #define EXTERN +#else + #define EXTERN extern +#endif + + +/* Global variables declarations. */ + + +/* Function prototypes. */ +EXTERN float *memoriaNuevoMalloc(FILE* data, int *size); + +#undef memoria_IMPORT +#undef EXTERN +#endif /* memoria_h */ diff --git a/Examen1/Bernardo/modelo.c b/Examen1/Bernardo/modelo.c new file mode 100644 index 0000000..67ecb79 --- /dev/null +++ b/Examen1/Bernardo/modelo.c @@ -0,0 +1,102 @@ +// +// vista.c +// +// +// Created by Bernardo García 8/oct/2020 +// + +#include "modelo.h" +#include + +void ordenar(float *arreglo, int size){ + float extra=0; + for(int i=0; iarreglo[j]){ + extra=arreglo[j]; + arreglo[j]=arreglo[i]; + arreglo[i]=extra; + } + } + } +} + +float media(float *arreglo, int size){ + float Sum=0; + for(int i=0; imax){ + moda=arreglo[i]; + } + } + return moda; +} + +float desviacion(float *arreglo, float media, int size){ + float Sum=0; + for(int i=0; iMaximo){ + Maximo=arreglo[i]; + } + } + return Maximo; +} + +float distancia(float *arreglo, int size){ + int A=(int)size*0.95; + int B=(int)size*0.25; + float distancia=arreglo[A]-arreglo[B]; + return distancia; +} + +void cast(float *arreglo, int size){ + for(int i=0; i +#include + +/* +* Application specific headers required by the following declarations +* (the implementation will import its specific dependencies): +*/ + +/* Constants declarations. */ + +/* Set EXTERN macro: */ + +#ifndef modelo_IMPORT + #define EXTERN +#else + #define EXTERN extern +#endif + + +/* Global variables declarations. */ +// + +/* Function prototypes. */ + +EXTERN void ordenar(float *arreglo, int size); + +EXTERN float media(float *arreglo, int size); + +EXTERN float mediana(float *arreglo, int size); + +EXTERN float moda(float *arreglo, int size); + +EXTERN float desviacion(float *arreglo, float media, int size); + +EXTERN float minimo(float *arreglo, int size); + +EXTERN float maximo(float *arreglo, int size); + +EXTERN float distancia(float *arreglo, int size); + +EXTERN void cast(float*arreglo, int size); +/* + * + * +*/ + +#undef modelo_IMPORT +#undef EXTERN +#endif /* modelo_h */ diff --git a/Examen1/Bernardo/pipes.c b/Examen1/Bernardo/pipes.c new file mode 100644 index 0000000..4f1f08a --- /dev/null +++ b/Examen1/Bernardo/pipes.c @@ -0,0 +1,159 @@ +// +// pipes.c +// +// +// Created by Mauricio de Garay, Bernardo García and Fernando Tapia on 29/09/2020. +// +#include +#include +#include +#include + + + +/* Function prototypes. */ + + +/* +* La función openFile se encarga de retornar un filepointer con un nuevo archivo de tipo lectura. +* +* +* @params + +* +* @returns + *FILE fpointer + +*/ +FILE* pipesOpenFile(char *archivo) +{ + return (fopen(archivo, "rt")); +} + +/* Function prototypes. */ + + +/* +* La función openFile se encarga de retornar un filepointer con un nuevo archivo de tipo lectura. +* +* +* @params + +* +* @returns + *FILE fpointer + +*/ +FILE* pipesWriteNewFile(char *archivo) +{ + return (fopen(archivo, "wt")); +} + +void pipesWritePlot(FILE *especial, float *arreglo, int size){ + int contador=0; + for(int i=0; i +#include +#include +#include +#ifndef pipes_h +#define pipes_h +#ifndef pipes_IMPORT + #define EXTERN +#else + #define EXTERN extern +#endif + + +/* Función del módulo. */ +/* +* El módulo pipes se encarga de abrir y escribir el archivo csv con los resultados, y además de establecer la conexión con GNUPlot y graficar este archivo. +* +* +*/ + + +/* Function prototypes. */ + + +/* +* La función openFile se encarga de retornar un filepointer con un nuevo archivo de tipo lectura. +* +* +* @params + +* +* @returns + *FILE fpointer + +*/ +EXTERN FILE* pipesOpenFile(char *archivo); + +/* +* La función closeFile se encarga de cerrar el filepointer del archivo. +* +* +* @params + archivo +* +* @returns + void + +*/ +EXTERN void pipesCloseFile(FILE *data); + +/* +* La función writeFile se encarga de escribir un archivo CSV con los arreglos que recibe. +* +* +* @params + int rows + float[] RespuestaResorte + float[] TiempoDiscreto + FILE * fpointer +* +* @returns +*/ +void pipesWriteFile(int rows, float RespuestaResorte[], float TiempoDiscreto[], FILE * fpointer); + +/* +* La función pipesNewFile escribe nuevo archivo +*/ +EXTERN FILE* pipesWriteNewFile(char *archivo); + +/* +* La función openGnuPlot se encarga de retornar un pipepointer que tenga una conexión establecida con GNUPlot. +* +* +* @params + +* +* @returns + FILE * gnupointer + +*/ +EXTERN FILE * pipesOpenGnuPlot(); + +/* +* La función pipesGraphGnuPlot se encarga de graficar en GNUPlot los datos que tenga en un archivo. +* +* +* @params + gnupointer + NombreArch +* +* @returns +*/ +EXTERN void pipesGraphGnuPlot(FILE * gnupointer, char NombreArch[]); + +EXTERN void pipesWritePlot(FILE *especial, float *arreglo, int size); +/* +* La función pipesObtenerValores se encarga de recibir de un archivo los datos y guardarlos en arreglo +* +* +* @params + arreglo, archivo +* +* @returns +*/ +EXTERN void pipesObtenerValores(float *arreglo, FILE *archivo); + +EXTERN void pipesWrite(FILE *archivo, float media, float moda, float mediana, float desviacion, float minimo, float maximo, float distancia); +#undef pipes_IMPORT +#undef EXTERN +#endif diff --git a/Examen1/Bernardo/seguridad.c b/Examen1/Bernardo/seguridad.c new file mode 100644 index 0000000..0104fb2 --- /dev/null +++ b/Examen1/Bernardo/seguridad.c @@ -0,0 +1,12 @@ +#include "seguridad.h" + +ERROR_CODE seguridad_validar(char *archivo){ + + if(strcmp("data.csv", archivo)==0){ + return SUCCESS; + } + else{ + return INVALID; + } + +} diff --git a/Examen1/Bernardo/seguridad.h b/Examen1/Bernardo/seguridad.h new file mode 100644 index 0000000..e936b49 --- /dev/null +++ b/Examen1/Bernardo/seguridad.h @@ -0,0 +1,51 @@ +// +// seguridad.h +// +// +// Created by Bernardo García 8/oct/2020 +// + +#ifndef seguridad_h +#define seguridad_h + +/* +* System headers required by the following declarations +* (the implementation will import its specific dependencies): +*/ + +#include +#include +#include +/* +* Application specific headers required by the following declarations +* (the implementation will import its specific dependencies): +*/ + +/* Constants declarations. */ + +/* Set EXTERN macro: */ + +#ifndef seguridad_IMPORT + #define EXTERN +#else + #define EXTERN extern +#endif + + +/* Global variables declarations. */ + +typedef enum{ + SUCCESS, + MEM_ERROR, + VALUE_ERROR, + INVALID, +}ERROR_CODE; +// + +/* Function prototypes. */ + +EXTERN ERROR_CODE seguridad_validar(char *archivo); + +#undef seguridad_IMPORT +#undef EXTERN +#endif /* seguridad_h */ diff --git a/Examen1/Bernardo/vista.c b/Examen1/Bernardo/vista.c new file mode 100644 index 0000000..9eecb77 --- /dev/null +++ b/Examen1/Bernardo/vista.c @@ -0,0 +1,21 @@ +// +// vista.c +// +// +// Created by Bernardo García 8/oct/2020 +// + +#include "vista.h" + +void vista_archivo(char *archivo){ + system("clear"); + printf("Dame el nombre del archivo: "); + scanf("%s", archivo); + fpurge(stdin); +} + +void vista_error(){ + printf("\nINVALIDO. Tu archivo se tiene que llamar data.csv :(\nPresiona enter para volver a intentar: "); + getchar(); + fpurge(stdin); +} diff --git a/Examen1/Bernardo/vista.h b/Examen1/Bernardo/vista.h new file mode 100644 index 0000000..0b766d6 --- /dev/null +++ b/Examen1/Bernardo/vista.h @@ -0,0 +1,50 @@ +// +// vista.h +// +// +// Created by Bernardo García 8/oct/2020 +// + +#ifndef vista_h +#define vista_h + +/* +* System headers required by the following declarations +* (the implementation will import its specific dependencies): +*/ + +#include +#include + +/* +* Application specific headers required by the following declarations +* (the implementation will import its specific dependencies): +*/ + +/* Constants declarations. */ + +/* Set EXTERN macro: */ + +#ifndef vista_IMPORT + #define EXTERN +#else + #define EXTERN extern +#endif + + +/* Global variables declarations. */ +// + +/* Function prototypes. */ + +EXTERN void vista_archivo(char *archivo); + +EXTERN void vista_error(); +/* + * + * +*/ + +#undef vista_IMPORT +#undef EXTERN +#endif /* vista_h */