#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语句选择他们要使用的功能。有什么建议吗?
答案 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语句,以便让用户决定要应用哪个函数。