Tengo un código bastante aproximado, me está fallando en algo y no consigo saber en que. Me compila sin errores pero no me devuelve los resultados correctos. Intento cambiar cosas pero nada, me arroja desde 0 a direcciones de memoria, espero que alguien pueda decirme en que estoy fallando.
Gracias :)
Código c:
Ver original
#include <stdio.h> #include <stdlib.h> #include <math.h> #define PI 3.1415926 #define UMBRAL 10e-6 /* ---------- Declaración de los prototipos de las funciones ---------- */ double calcula_term_N (const double t_ant, const double x, const int n); void seno(double angulo, double *res); void coseno (const double angulo, double *res); int main(void) { /* ---------- Declaración de variables ---------- */ double angulo; /* Ángulo introducido por teclado */ double res; /* Resultado de la función seno */ double res_seno; double res_coseno; /* ------------ Programa principal ------------- */ while ( angulo > PI || angulo < -PI) { } /* Llamada a la función seno(); */ seno(angulo, &res); /* Llamada a la función coseno(); */ coseno(angulo, &res); return 0; } /* ---------- Definición de funciones ---------- */ /* Calcula un término de la serie de McLaurin para la función seno */ double calcula_term_N (const double t_ant, const double x, const int n) { int termN; return termN; } /* Calcula el valor del seno del ángulo medido en radianes usando la función calcula_Term_N para calcular cada término de la serie de McLaurin */ void seno(double angulo, double *res) { int t_actual; /* Almacena el valor del primer término */ int term; /* Término en el que se encuentra el bucle */ int t_ant; /* Término anterior al termino actual */ term=0; /* Se inicializa a 0 porque es el primer término */ *res=0; /* Al principio el resultado es 0 */ t_actual = angulo; /* Para la función seno, el valor del primer término coincide con el valor del ángulo */ /* Mientras el valor absoluto del término que se va a calcular sea menor que el UMBRAL, el bucle sigue ejecutándose */ { /* Se contabiliza el término actual y se guarda en *res */ *res = *res + t_actual; term++; /* El término anterior pasa a ser el término actual */ t_ant=t_actual; t_actual = calcula_term_N(t_ant, angulo, term); } } /* Calcula el valor del coseno de un ángulo medido en radianes usando la función seno, a partir de la fórmula sen^2 x + cos^2 x = 1 */ void coseno (const double angulo, double *res) { if ( angulo < (PI/2) ) { *res = -*res; } }