Advertisement
Hi52

Ejercicio 14

Nov 24th, 2014
189
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.65 KB | None | 0 0
  1. /*
  2.  * Mario Rubio
  3.  */
  4. #include <stdio.h>
  5. #include <math.h>
  6. #include <ctype.h>
  7. //Funcion encargada de realizar el factorial
  8. int factorial(int num){
  9.     int fac=1;
  10.     if(num==0) return 1;
  11.     while(1){
  12.         if(num==1) return fac;
  13.         else fac=fac*num--;
  14.     }
  15.     return fac;
  16. }
  17. //Funcion encargada de convertir un angulo de entrada a radianes
  18. double to_rad(int deg){
  19.     return ((M_PI*deg)/180);
  20. }
  21. //Funcion encargada de calcular el coseno con un precision de n sumandos
  22. double coseno(float rad,int sumandos){
  23.     int i;
  24.     double cos=0;
  25.     for(i=0;i<=sumandos;++i){
  26.         cos=cos+(((pow(-1,i)*pow(rad,2*i))/(factorial(2*i))));
  27.     }
  28.     return cos;
  29. }
  30. int main(){
  31.     int deg; //Variable de grados
  32.     float rad; //Variable de radianes
  33.     int sumandos; //Variable de los sumandos del sumatorio
  34.     char rep;
  35.     while(1){
  36.         //Solicita los angulos al usuario y comprueba que esten entre 0 a 360
  37.         printf("Escriba el angulo. >");
  38.         scanf("%d",&deg);
  39.         if(deg<0||deg>=360){
  40.             printf("El angulo introducido no es valido.");
  41.             continue;
  42.         }
  43.         rad=to_rad(deg); //De angulos a radianes
  44.         printf("%d angulos son %.2lf radianes\n\n",deg, rad);
  45.         printf("Escriba el numero de sumandos a utilizar. >");
  46.         scanf("%d",&sumandos); //Se pide el numero de sumandos
  47.         //Se muestra el resultado
  48.         printf("El coseno de %.2lf (%d grados) es de %.3lf.\n",rad,deg,coseno(rad,sumandos));
  49.         //Se pide si se quiere repetir el proceso
  50.         while(1){
  51.             printf("Escriba S para repetir los calculos o N para cerrarlo. >");
  52.             fflush(stdin);
  53.             scanf("%c",&rep);
  54.             rep=tolower(rep); //De mayusculas minusculas <ctype.h>
  55.             if((rep=='n')||(rep=='s')) break;
  56.             else continue;
  57.         }
  58.         if(rep=='n') break;
  59.     }
  60.     return 0;
  61. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement