1

我一个月前才开始学习这门 C++ 课程。现在我被分配编写一个程序来计算这个。我不知道我做错了什么。

#include <stdio.h>
#include <math.h>

float gatherl1();
float gatherl2();
float gatheran();
void values(float,float,float);
float findlength(float,float,float);
float findan2(float,float,float);
float findan3(float,float,float);
void name(float,float,float);


int main(void)
{ 
    float length1,length2;

    float length3;

    float angle1,angle2,angle3;

    length1 = gatherl1();
    length2 = gatherl2();
    angle1 = gatheran();

    values(length1,length2,angle1);

    length3 = findlength(length1,length2,angle1);

    angle2 = findan2(length1,length2,length3);
    angle3 = findan3(length1,length2,length3);

    name(angle1,angle2,angle3);
}

float gatherl1()
{
        float l1;

        printf("Enter the length of one of the sides of any triangle\n");

        scanf("%f",&l1);

        return l1;
}

float gatherl2()
{
        float l2;


        printf("Enter the length of the other side\n");

        scanf("%f",&l2);



        return l2;
}

float gatheran()
{
        float angle;

        printf("Enter the angle between them.\n");

        scanf("%f",&angle);

        return angle;
}



void values(float l1, float l2, float angle)
{
    printf("\n The two sides are %f and %f. The angle between them is %f \n",l1,l2,angle);
}
float findlength(float l1, float l2, float angle)
{
    float l3,pyt,boy;

    if (angle==90)
    {
        pyt = pow(l1,2) + pow(l2,2);
        l3 = sqrt(pyt);

    }
    else 
    {
        boy = pow(l1,2) + pow(l2,2) - 2*l1*l2*cos(angle);
        l3 = sqrt(boy);
    }


    printf("\nthe third side is = %f",l3);
    return l3;
}

float findan2(float l1, float l2, float l3)
{
    float cosangle2,angle2;

    cosangle2 = (pow(l2,2) + pow(l3,2) - pow(l1,2)) / (2*l2*l3);
    angle2 = acos(cosangle2);
    return angle2;

}
float findan3(float l1, float l2, float l3)
{
    float cosangle3,angle3;

    cosangle3 = (pow(l1,2) + pow(l3,2) - pow(l2,2)) / (2*l1*l3);
    angle3 = acos(cosangle3);
    return angle3;

}

void name(angle,angle2,angle3)
{
    printf("\n\n\n the other two angles are %f and %f",angle2,angle3);

    printf("\n\n\n The angle you put is %f",angle);


    if(angle == 90)
    {
        printf("\n The triangle is a right triangle\n");
    }
    else if(angle < 90)
    {
        printf("\n The triangle is a acute triangle\n");
    }
    else
    { 
        printf("\n The triangle is a obtuse triangle\n");
    }


}

我以前从未使用过 cos 和 arccos 函数,所以我不确定这是否是原因。或功能,因为我也是新手。请帮我!!谢谢你。

4

2 回答 2

4

您传递给函数的值是否以弧度表示?因为 cos 和 arccos 假设弧度作为输入。

于 2013-04-04T22:41:15.457 回答
1

C 三角函数以弧度而不是度数运行。您必须乘以pi/180将度数转换为弧度。

于 2013-04-04T22:42:23.497 回答