1 /* vim: set et ts=4 sw=4 fdm=indent fdl=1 fdn=1 fo+=t:
3 * Taller de Programación (75.42).
6 * Graficador de la solución de una ecuación diferencial por el método
7 * de Euler (explícito).
9 * Copyleft 2003 - Leandro Lucarella <llucare@fi.uba.ar>
10 * Puede copiar, modificar y distribuir este programa bajo los términos de
11 * la licencia GPL (http://www.gnu.org/).
13 * Creado: sáb ago 23 16:59:01 ART 2003
21 /* Para utilizar printf() y stderr */
23 /* Para utilizar EXIT_SUCCES y EXIT_FAILURE */
26 /** Tiempo inicial. */
29 /** Tiempo final por omisión. */
30 #define DEFAULT_TF 70.0
32 /** Valor inicial de la función por omisión. */
33 #define DEFAULT_F0 0.0
35 /** Valor del pas de iteración por omisión. */
36 #define DEFAULT_PASO 1.0
38 /** Caracter usado para dibujar un punto por omisión. */
39 #define DEFAULT_PUNTO '*'
41 /** Caracter usado para dibujar un punto blanco por omisión. */
42 #define DEFAULT_BLANCO ' '
45 * Imprime una explicación de como usar el programa.
47 * \param fh Archivo en donde imprimir el mensaje (ej: stdout o stderr).
49 void imprimir_uso(FILE* fh) {
51 fprintf(fh, "Modo de uso:\n");
52 fprintf(fh, " tp1 [paso [tf [f0]]]\n");
54 fprintf(fh, "Donde:\n");
55 fprintf(fh, " paso: Paso a utilizar (%.2f por omisión).\n", DEFAULT_PASO);
56 fprintf(fh, " tf: Tiempo final (%.2f por omisión).\n", DEFAULT_TF);
57 fprintf(fh, " f0: Valor inicial de la función (%.2f por omisión).\n",
63 * Este es el programa que se encarga de resolver el trabajo práctico.
65 * \param argc Cantidad de parámetros de línea de comandos ingresados.
66 * \param argv Parámetros de línea de comandos.
68 * \return EXIT_FAILURE si hubo un error, si no EXIT_SUCCESS.
70 int main(int argc, const char** argv) {
71 /* Declaración de variables. (TODO: describir variables) */
72 Resultados resultados;
74 Real paso = DEFAULT_PASO;
77 char punto = DEFAULT_PUNTO;
78 char blanco = DEFAULT_BLANCO;
79 /* Obtención de datos. */
80 if (!cargar_datos(argc, argv, &paso, &tf, &f0)) {
81 /* Si hay error, imprime mensaje con modo de uso y sale con error. */
85 /* Cálculo de la solución, dejando en un array los valores de cada paso. */
86 pasos = resultados_calcular(&resultados, paso, T0, tf, f0);
87 /* XXX - sacar o poner más lindo. */
88 printf("paso = %f, tf = %f, f0 = %f, pasos = %i\n", paso, tf, f0, pasos);
89 /* TODO: Barrido de pantalla de arriba hacia abajo consultando el array
90 * y dibujando los resultados pertinentes. */
91 resultados_graficar(&resultados, pasos, punto, blanco);