Giro de una barra extensible (II)
De Ejercicios
Contenido |
Enunciado
GIRO DE UNA BARRA EXTENSIBLE
Con el mismo programa principal del programa barra.c sustituye la función atan2a() por la función atan2b(), también programada por ti, ¡cómo no!, que devuelva un ángulo comprendido entre (0, 2π) radianes.
Soluciones
Programa en C por Angel
Solución comentada del Ejercicio:
/* fichero barra2.c */ #include <stdio.h> #include <math.h> #define PI 3.141592654 double calculaLongitud(double, double); double atan2b(double, double); void main(void) { FILE *fi; double x, y; int i; double radianes; double grados; double longitud; fi=fopen("datos.d", "r"); for (i=1; i<=10; i++) { fscanf(fi, "%lf", &x); fscanf(fi, "%lf", &y); longitud=calculaLongitud(x,y); radianes=atan2b(x,y); grados=radianes*180.0/PI; printf("En el instante %d la barra tiene una longitud de %lf\n", i, longitud); printf("y forma un angulo de %lf radianes o %lf grados con la horizontal.\n", radianes, grados); getchar(); } fclose(fi); } double calculaLongitud(double x, double y) { double resul; resul=sqrt(x*x+y*y); return(resul); } double atan2b(double x, double y) { double resul, aux; if (x==0.0) if (y>0.0) resul=PI/2; else resul=3*PI/2; else aux=atan(y/x); if (x<0.0) resul=aux+PI; else if (x>0.0) if (y<0.0) resul=2*PI+aux; else resul=aux; return (resul); }
Comentario
El programa es idéntico al barra.c, con la salvedad del cálculo de la tangente que se hace de forma similar al programa anterior.