LawOfCosines解c,但得到的答案很奇怪。

问题描述 投票:1回答:1

我一直在尝试用余弦定律来编写一个程序,来解决c的问题。程序运行正确,但我得到的答案是可笑的大,注意到它是如何在科学符号。

#include <iostream>
#include <cmath>
using namespace std;
class TrigMath
{
    private: 
    double a;
    double b;
    double y;

    public:
    double LawOfCos()
    {
        return sqrt(pow(a,2) + pow(b,2) - 2*a*b*cos(y));
    }

    void seta(double A)
    {
        A = a;
    }

    void setb(double B)
    {
        B = b;
    }

    void sety(double Y)
    {
        Y = y;
    }
};

int main()
{
    TrigMath triangle1;
    triangle1.seta(3);
    triangle1.setb(4);
    triangle1.sety(60);

    cout << "c is equal to " << triangle1.LawOfCos() << endl;


    return 0;
}
c++ trigonometry
1个回答
1
投票

cos()函数的输入是弧度而不是度数。

试着将度数转换为弧度,然后将其作为输入。

在类函数seta,setb和sety中,你写了A=a,B=b和Y=y.你必须把它们改为a=A,b=B和Y=y。

因此,在应用了所有的更改之后,代码应该是这样的。

#include <iostream>
#include <cmath>
using namespace std;
class TrigMath
{
    private: 
    double a = 0;
    double b = 0;
    double y = 0;

    public:
    double LawOfCos()
    {
        return sqrt(pow(a,2) + pow(b,2) - 2*a*b*cos(y));
    }

    void seta(double A)
    {
        a = A;
    }

    void setb(double B)
    {
        b = B;
    }

    void sety(double Y)
    {
        y = Y*3.14/180;
    }
};

int main()
{
    TrigMath triangle1;
    triangle1.seta(3.0);
    triangle1.setb(4.0);
    triangle1.sety(60.0);

    cout << "c is equal to " << triangle1.LawOfCos() << endl;


    return 0;
}
© www.soinside.com 2019 - 2024. All rights reserved.