diff --git a/TDA practica1 Equipo4.pdf b/TDA practica (1).pdf similarity index 76% rename from TDA practica1 Equipo4.pdf rename to TDA practica (1).pdf index 4f999d4..816a4c2 100644 Binary files a/TDA practica1 Equipo4.pdf and b/TDA practica (1).pdf differ diff --git a/equations.c b/equations.c new file mode 100644 index 0000000..f599c67 --- /dev/null +++ b/equations.c @@ -0,0 +1,76 @@ + +// equations.c +// +// +// Created by David Perez on 29/09/2020. +// + +#include +#include +#include "equations.h" +#include "main.h" +#include "files.h" + +/** + * Obtiene el resultado de la ecuacion de las fuerzas del sistema. + * @param + * masa (double): + * La masa del usuario en Kg. + * Dt (double ): + * nuestra constante de cambio + * k (double): + * la constante de nuestro bungee + * + * @return double. +*/ +double equations_fuerzas(double masa, double Dt, double K, double xt) +{ + double res, BT = 10; + res=(-xt * (((K * (Dt * Dt))/masa)+1-((BT*DT)/masa))); + //-x(t)*(1+((K Dt^2)/masa)) + return res; +} + +/** + * Obtiene el resultado de la gravedad por nuestra constante de cambio. + * @param + * Dt (double ): + * nuestra constante de cambio + * @return double. +*/ +double equations_grav(double Dt) +{ + return ((Dt * Dt) * GRAVEDAD); +} + +/** + * Obtiene el resultado nuestro sistema. + * @param + * masa (double): + * La masa del usuario en Kg. + * t (double ): + * el tiempo del movimiento + * k (double): + * la constante de nuestro bungee + * xt (double): + * el movimiento anterior + * xt2 (double): + * dos movimientos antes. + * + * @return double. +*/ +double equ(double K, double masa, double t, double xt, double xt2) +{ + double res, eq1, eq2, eq3, BT = 10; + if(t==0 || t<=(DT+0.01)) + return 10; + else + { + eq1=equations_fuerzas(masa,DT, K,xt2); + eq2=(2-(BT*DT)/masa)*xt; + eq3=equations_grav(DT); + res=eq1+eq2+eq3; + return res; + } +} + diff --git a/equations.h b/equations.h new file mode 100644 index 0000000..fcfbe5e --- /dev/null +++ b/equations.h @@ -0,0 +1,105 @@ +// +// equations.h +// +// +// Created by David Perez on 28/09/2020. +// + +#ifndef equations_h +#define equations_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. */ +#define GRAVEDAD 9.81 +#define DT 0.001 +/* Set EXTERN macro: */ + +#ifndef equations_IMPORT +#define EXTERN +#else +#define EXTERN extern +#endif + +/* Types declarations. */ + +/* Global variables declarations. */ + + +/* Function prototypes. */ + + +/* + * + * La funcion equations_fuezas calcula la fuerza externa + * + * @params + * masa (double): + * masa proporcionada por el usuario dado por el usuario + * Dt(double); + * diferencia de tiempo + * K (double): + * Constante del bongee +.* xt (double) + * posicion 2 segundos atras atras + + * @returns + int +*/ + + +EXTERN double equations_fuerzas(double masa, double Dt, double K, double xt); +/* + * + * La funcion equiations_grav regresa el valor de la graverdad por + * el cuadrado de la diferencial del tiempo. + * + * @params + * + * Dt(double); + * diferencial del tiempo + + * @returns + int. +*/ + + +EXTERN double equations_grav(double Dt); + +/* + * + * La funcion equ regresa el valor de la posicion que + * necesita el usuario + * + * @params + * K (double); + * contante de elasticidad del bongee + * masa (double); + * masa de la persona que esta cayendo + * t (double); + * tiempo de donde se quirere sacar la posicion + * xt (double) + * posicion anterior + * xt2 (double) + * hace 2 posiciones + * @returns + * double +*/ + + +EXTERN double equ(double K, double masa, double t, double xt, double xt2); + +#undef equations_IMPORT +#undef EXTERN +#endif /* equiations_h */ diff --git a/files.c b/files.c new file mode 100644 index 0000000..87da24c --- /dev/null +++ b/files.c @@ -0,0 +1,45 @@ +// +// files.c +// +// +// Created by Juan Carlos Garcia on 28/09/20. +// + + +#include "files.h" +#include "main.h" +#include "equations.h" + +/* Function imprimircpu. */ +/** + * Guarda en un archivo la informacion del tiempo que le tomo a nuestro cpu hacer los calculos de cada operacion + * @param + * count (int) + * Index + * cpu_time (double) + * tiempo del cpu + * arch ( FILE *) + * apuntador al archivo que contiene la informacion de nuestro cpu + * @return void +*/ +void imprimircpu(int cont,double cpu_time, FILE * arch) +{ + fprintf(arch, "\n%d, %f", cont, cpu_time); + +} +/** + * Writes into a file. + * @param + * arch (FILE *): + * Storage file + * count (size_t ): + * Index + * res (double): + * Equation result + * + * @return void. +*/ +void imprimirres(int count, double res,FILE * arch) +{ + fprintf(arch, "\n%d, %f", count, res); +} diff --git a/files.h b/files.h new file mode 100644 index 0000000..d7dfb70 --- /dev/null +++ b/files.h @@ -0,0 +1,36 @@ +// +// files.h +// +// +// Created by Juan Carlos Garcia on 28/09/20. +// + +#ifndef files_h +#define files_h + +#include + + +#ifndef files_IMPORT + #define EXTERN +#else + #define EXTERN extern +#endif + + +/*Imprime los datos a un archivo tipo .csv donde cada dato está en una celula diferente + * @params + * FILE * arch1 & arch2 + * archivos .csv a donde se van a escribir los datos + * int cont + * numero contador que indica cuantas veces se ha repetido el programa + * double res & cpu_time + * resultados de la ecuacion y en cuanto tiempo se calculó + * @return void + */ + +EXTERN void imprimircpu(int cont,double cpu_time, FILE * arch); + +EXTERN void imprimirres(int count, double res,FILE * arch); + +#endif /* files_h */ diff --git a/main.c b/main.c new file mode 100644 index 0000000..83e342e --- /dev/null +++ b/main.c @@ -0,0 +1,48 @@ +// +// main.c +// +// +// Created by Juan Carlos Garcia on 28/09/20. +// + +#include "main.h" +#include "equations.h" +#include "files.h" + + + +int main(void){ + FILE * arch1, * arch2; + double tiempo,k,masa,cpu_time,resultado[100000], ant1=0, ant2=0; + int cont; + float t; + clock_t start, stop; + + arch1 = fopen("tiempoCPU.csv","w"); + arch2 = fopen("resultados.csv","w"); + + printf("Calculadora de bongee"); + printf("\nCual es la masa del usuario? (kg)\n"); + scanf("%lf",&masa); + printf("\nCual es el tiempo de la caida? (s)\n"); + scanf("%lf",&tiempo); + printf("\nCual es el constante de bongee? (N/m)\n"); + scanf("%lf",&k); + + + for(cont = 0; cont <= tiempo *(1/DT); cont ++){ + t = (float)cont * DT; + start = clock(); + resultado[cont] = equ(k,masa,t, ant1, ant2); + stop = clock(); + cpu_time = (stop-start)*1e3 ; + ant2=ant1; + ant1 = resultado[cont]; + + imprimircpu(cont,cpu_time,arch1); + imprimirres(cont, resultado[cont],arch2); + } + fclose(arch1); + fclose(arch2); + return 0; +} diff --git a/main.h b/main.h new file mode 100644 index 0000000..40b06ee --- /dev/null +++ b/main.h @@ -0,0 +1,25 @@ +// +// template.h +// +// +// Created by Juan Carlos Garcia on 28/09/20. +// + +#ifndef main_h +#define main_h + +#include +#include +#include + + +#ifndef main_IMPORT + #define EXTERN +#else + #define EXTERN extern +#endif + + + + +#endif /* main_h */