Kavin Thipthamai
Kavin Thipthamai

Reputation: 19

C++ ( function, cosine) not giving the correct answer

I just started taking this C++ course like a month ago. Now I'm assigned to write a program to calculate this. I don't know what I did wrong.

#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");
    }


}

I have never use cos and arccos function before so I'm not sure if that's the cause. or the function because I'm new to function too. Please Help Me!! thank you.

Upvotes: 1

Views: 1495

Answers (2)

Barmar
Barmar

Reputation: 780861

The C trigonometry functions operate in radians, not degrees. You have to multiply by pi/180 to convert degrees to radians.

Upvotes: 1

Fred
Fred

Reputation: 1091

Are the values that you pass to your functions in terms of radians? Because cos and arccos assume radians as an input.

Upvotes: 4

Related Questions