juinda

Untitled

Nov 4th, 2016
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.35 KB | None | 0 0
  1. // 20161027泰勒sin cos.cpp : 定義主控台應用程式的進入點。
  2. //
  3.  
  4. #include "stdio.h"
  5. #include<stdlib.h>
  6. #include<ctype.h>
  7. #include<math.h>
  8. double fsin(double,double);
  9. float fcos(float, float);
  10. int main()
  11. {
  12.  
  13. char a[4];
  14. double angle, n;
  15. while (scanf("%s", a)!= EOF)
  16. {
  17. int pn = 1;
  18. scanf("%lf %lf", &angle, &n);
  19. int i = 0;
  20. while (a[i] != '\0')//to小字母
  21. {
  22. a[i] = tolower(a[i]);
  23. i++;
  24. }
  25. while (angle >180 || angle < 0)//角度轉換
  26. {
  27. if (angle >= 360)angle -= 360;
  28. if (angle <0)angle += 360;
  29. if (angle <= 360 && angle > 180)
  30. {
  31. angle -= 180;
  32. pn = -1;
  33. }
  34. }
  35. angle = angle*3.14 / 180;
  36. if (!strcmp(a, "sin"))
  37. {
  38. double ans = fsin(angle, n);
  39. printf("%.6lf\n",pn*ans);
  40. }
  41. else if (!strcmp(a, "cos"))
  42. {
  43. float ans = fcos(angle, n);
  44. printf("%.6f\n", pn*ans);
  45. }
  46. else
  47. {
  48. puts("Input Error.");
  49. }
  50. }
  51. }
  52.  
  53. double fsin(double angle, double n)
  54. {
  55. if (n == -1)return 0;
  56. double div = 1;
  57. for (int i = 1; i <= 2 * n + 1; i++)
  58. div *= i;
  59. double sum = pow(-1,n)*pow(angle, 2 * n + 1) /div;
  60. return (sum + fsin(angle,--n));
  61. }
  62. float fcos(float angle, float n)
  63. {
  64. if (n == -1)return 0;
  65. float div = 1;
  66. for (int i = 1; i <= 2 * n; i++)
  67. {
  68. div *= i;
  69. }
  70. double sum = pow(-1, n)*pow(angle, 2 * n) / div;
  71. return sum + fcos(angle, --n);
  72. }
Advertisement
Add Comment
Please, Sign In to add comment