2015-02-17 37 views
-6

我找不出反余弦部分来使它工作。或者我犯了更多的错误。在C++ visual studio中的cos定律

using namespace std;

int main() 

{ 

    double a,b,c,angle,acos; 

    cout << "Enter the value of a"<<endl; 
    cin >>a; 

    cout << " Enter the value of b "<<endl; 
    cin >> b; 

    cout << "Enter the value of c " <<endl; 
    cin >> c; 

    angle = acos*(-0.6481) * ((a*a+b*b-c*c)/2*a*b); 

    cout << "The angle of cos is " <<angle<< endl; 

    system ("pause"); 

} 
+2

不知道你在问什么,但是当你第一次使用它时,'acos'是未初始化的。 – juanchopanza 2015-02-17 23:12:56

+0

我正在寻找角度。 – 2015-02-17 23:15:04

+0

如果'acos'初始化为0,则角度将为0。 – 2015-02-17 23:19:59

回答

0

law of cosines告诉我们的是,如果A,B,C是一个三角形的三个边的长度,所述边缘的角度的面向c中的余弦,是:

cos(angle) = (a² + b² - c²)/2ab // mathematical equation, not c++ code !) 

的cosinus的反函数是arccosinus,即在C++库中的acos()。所以我猜你的公式应该是:

angle = acos((a*a+b*b-c*c)/2*a*b); 

这个结果用弧度表示。明知PI弧度为180度,则可以将此转换为度:

#include <cmath> 
... 
const double pi=3.14159265; 
double angle_in_deg = acos((a*a+b*b-c*c)/2*a*b) * 180/pi; 

请注意,你已经在你原来的代码中使用的语法定义acos是一个变量(这仍然unititalized)。这就是为什么原始公式不能给出任何正确的结果。