Bhaskara罪恶功能

时间:2018-10-07 19:25:15

标签: c++ math trigonometry

#include <iostream>
using namespace std;

int main()
{
const float pi = 3.14159;
float sin, cos, tan, sec, csc, cot;

double x = 0.0;

sin = (16 * x * (pi - x)) / (5 * pi * pi - 4 * pi * (pi - x));
cos = (pi * pi - 4 * x * x) / (pi * pi + x * x);
tan = sin / cos;
sec = 1 / cos;
csc = 1 / sin;
cot = 1 / tan;

cout << "Enter radians: ";
cin >> x ;
cout << "The sin of " << x << " is: " <<endl;
cout << sin;

}

我基本上是在尝试输入值'x'并返回该数字的正弦或类似值。我在尝试弄清楚如何格式化此格式以给我正确的数字时遇到麻烦。我最终将让用户通过else和if语句选择他们要使用的功能。有什么建议吗?

1 个答案:

答案 0 :(得分:2)

您可能应该尝试以模块化的方式定义事物,因此您可以更轻松地重用和测试。正如注释中已经指出的那样,您应该使用双精度而不是浮点型。原因很简单:double的精度是float的两倍。程序的可读性更高的代码如下所示:

#include <iostream>
#include <cmath>
using namespace std;

double bhaskaraSin(double x) {
  return (16 * x * (M_PI - x)) / (5 * M_PI * M_PI - (4 * x * (M_PI - x)));
}

double bhaskaraCos(double x) {
  return (M_PI * M_PI - 4 * x * x) / (M_PI * M_PI + x * x);
}

double bhaskaraTan(double x) {
  return bhaskaraSin(x) / bhaskaraCos(x);
}

// Similar for sec, csc and cot...

int main() {
  double x;
  cout << "Enter radians: ";
  cin >> x;
  cout << "The sin of " << x << " is: " << bhaskaraSin(x) << endl;
  return 0;
}

我建议您考虑使用switch-case语句代替if-else语句,以便让用户决定要应用哪个函数。