Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added Examen1/TDA_Statistics
Binary file not shown.
9 changes: 9 additions & 0 deletions Examen1/TDA_Statistics.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
#include"TDA_Statistics.h"

int main(void)
{

vista_Menu();

return 0;
}
158 changes: 158 additions & 0 deletions Examen1/TDA_Statistics.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,158 @@
//
// TDA_Statistics.h
//
//
// Creado por Rodrigo Garcia el 8 de octubre del 2020.
// Sinceramente siento que dos horas no son suficientes para esto. Una disculpa por el estado del examen, hice todo para lo que me dio tiempo.

#ifndef TDA_Statistics_h
#define TDA_Statistics_h


/*
* System headers required by the following declarations
* (the implementation will import its specific dependencies):
*/

#include <stdio.h>
#include <stdlib.h>

/*
* Application specific headers required by the following declarations
* (the implementation will import its specific dependencies):
*/

/* Constants declarations. */

/* Set EXTERN macro: */

#ifndef TDA_Statistics_IMPORT
#define EXTERN
#else
#define EXTERN extern
#endif

/* Types declarations. */


/* Global variables declarations. */
#define COLUMNS 2


/* Function prototypes. */


/*
*
* La funcion vista_Menu proporciona al usuario un menu con la bienvenida y la forma de operar del sistema.
* Pedira el nombre del archivo y se mandara al controlador
*
* @params
* void

* @returns
none
*/


EXTERN void vista_Menu(void);


/*
*
* La funcion controlador_Proceso settea todas las variables correspondientes y realiza las llamadas a la funciones.
*
*
* @params
* nombre_archivo (char *):
nombre del archivo que busca abrirse

* @returns
none
*/


EXTERN void controlador_Proceso(char * nombre_archivo);


/*
*
* La funcion modelo_Archivo abre un archivo del nombre recibido en el modo recibido
*
*
* @params
* nombre_archivo (char *):
Nombre del archivo a abrir
* modo (char *):
modo de apertura del archivo

* @returns
Archivo abierto en el modo indicado
*/


EXTERN FILE * modelo_Archivo(char * nombre_archivo, char * modo);


/*
*
* La funcion modelo_Euler_Method predice la posicion de la persona en el bongee dependiendo de los valores dados
* y la regresa al controlador para ser analizada
*
* @params
* Archivo (FILE *):
Archivo que se va a leer
* dimension (int *)
Puntero a entero que se llevarà el valor del tamanño del array

* @returns
array de floats con los valores del archivo
*/


EXTERN float * modelo_Lee_Archivo(FILE * Archivo, int * dimension);

/*
*
* La funcion modelo_Calcula_Centrales calculas las medidas de valor central del arreglo de valores
*
* @params
* array (float *):
Arreglo de los valores con lo que se haran los calculos
* dimension (int *)
Tamaño del array

* @returns
void
*/

EXTERN void modelo_Calcula_Centrales(float * array, int * dimension);


/*
*
* La funcion modelo_Crea_Archivo crea un archivo .csv con los datos obtenidos de los calculos
*
* @params
* media (float ):
Valor de la media calculada
* mediana (float )
Valor de la mediana calculada
* moda (float )
valor de la moda calculado

* @returns
void
*/

EXTERN void modelo_Crea_Archivo(float media, float mediana, float moda);




#undef TDA_Statistics_IMPORT
#undef EXTERN



#endif /* TDA_Statistics_h */
20 changes: 20 additions & 0 deletions Examen1/controlador_Proceso.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
#include"TDA_Statistics.h"

void controlador_Proceso(char * nombre_archivo)
{
int i;

int * tamano;
FILE * Archivo = NULL;
float * array;

Archivo = modelo_Archivo(nombre_archivo,"r");

array = modelo_Lee_Archivo(Archivo,tamano);

modelo_Calcula_Centrales(array,tamano);

free(array);

fclose(Archivo);
}
1 change: 0 additions & 1 deletion Examen1/data.csv
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
,0
0,5.077850806
1,5.11361086
2,5.013413304
Expand Down
3 changes: 3 additions & 0 deletions Examen1/data_statistics.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
Media: 4.955432
Mediana: 5.016256
Moda: 1.000000
10 changes: 10 additions & 0 deletions Examen1/modelo_Archivo.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
#include"TDA_Statistics.h"

FILE * modelo_Archivo(char * nombre_archivo, char * modo)
{
FILE * Archivo = NULL;

Archivo = fopen(nombre_archivo,modo);

return Archivo;
}
32 changes: 32 additions & 0 deletions Examen1/modelo_Calcula_Centrales.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
#include"TDA_Statistics.h"

void modelo_Calcula_Centrales(float * array, int * tamano)
{
float suma=0,media=0,mediana=0;
int i;

for(i=0;i<*tamano;i++)
{
suma = suma + array[i];
}

media = suma / *tamano;

if(*tamano % 2 != 0)
{
mediana = array[*tamano/2];
}

else
{
mediana = (array[(int) *tamano/2] + array[((int) *tamano/2)+1])/2;
}

printf("Media = %f\n",media);
printf("Mediana = %f\n",mediana);


//Se manda un uno en el valor de la moda ya que no hubi tiempo de calcular la moda.
modelo_Crea_Archivo(media,mediana,1);

}
15 changes: 15 additions & 0 deletions Examen1/modelo_Crea_Archivo.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
#include"TDA_Statistics.h"

void modelo_Crea_Archivo(float media, float mediana, float moda)
{
FILE * Archivo = NULL;

Archivo = modelo_Archivo("data_statistics.csv","w");

fprintf(Archivo, "Media: %f\n",media);
fprintf(Archivo, "Mediana: %f\n",mediana);
fprintf(Archivo, "Moda: %f\n",moda);

fclose(Archivo);

}
35 changes: 35 additions & 0 deletions Examen1/modelo_Lee_Archivo.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
#include"TDA_Statistics.h"

float * modelo_Lee_Archivo(FILE * Archivo, int * dimension)
{
int count_datos = 0, i = 0;

int temp;
float temp2;

float * data_array;

//Primero lo leemos sin guardar nada para determinar su tamaño.
while(!feof(Archivo))
{
fscanf(Archivo,"%d,%f\n",&temp,&temp2);
count_datos++;
}

*dimension = count_datos;

//Con la cantidad obtenida, instanciamos el arreglo.
data_array = (float *)malloc(count_datos * sizeof(float));

rewind(Archivo);

//Lo leemos nuevamente y esta vez guardamos los datos en el arreglo
while(!feof(Archivo))
{
fscanf(Archivo,"%d,%f\n",&temp,&data_array[i]);
i++;
}

//Lo retornamos cuando hayamos recopilado los datos.
return data_array;
}
17 changes: 17 additions & 0 deletions Examen1/vista_Menu.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
#include"TDA_Statistics.h"

void vista_Menu()
{
char nombre_archivo[50];

system("clear");

printf("\n\nIngrese el nombre del archivo para la captura de datos.");
printf("\nNombre del archivo: ");
gets(nombre_archivo);

controlador_Proceso(nombre_archivo);


}