Friday, December 7, 2018

C code review details of triangle shape by its sides

This C code shows how to implement details of triangle shape by its sides. And code is helpful while user is in between any algorithm-like manipulation task.

code:

//Tested OK on Code::Blocks IDE 17.12 & Cygwin+GCC tools.
//Gives various details like the angles, whether the triangle can be
//formed or not, circum radius, etc

#include<stdio.h>
//#include<conio.h>
#include<stdlib.h>
#include<math.h>

int main()
{

    float a,b,c,S,D,A,B,C,Area,R;
//    clrscr();
    printf("\nEnter the lengths of the three sides of the triangle : \n\t");
    scanf("%f%f%f",&a,&b,&c);

    S = (a+b+c)/2.0;        // S is the semiperimeter of the triangle
    D = S*(S-a)*(S-b)*(S-c);//D is the square of the area of the triangle
    if(D<=0)
    {
        printf("\nThe triangle cannot be formed");
        getchar();
        exit(0);
    }

    if((a==b || b==c || c==a) && !(a==b && b==c && c==a))
// this complex logic is to eliminate interpretting a triangle with allthree
// sides equal as both isosceles and equilateral.
        printf("\nThe triangle is ISOSCELES");
    if(a==b && b==c && c==a)
        printf("\nThe triangle is EQUILATERAL");
    if(a!=b && b!=c && c!=a)
        printf("\nThe triangle is SCALENE");

    Area = sqrt(D);
    R = (a*b*c)/(4.0*Area);
    printf("\nPERIMETER     = %.2f units",(2.0*S));
    printf("\nAREA          = %.2f sq.units",Area);
    printf("\nCIRCUM RADIUS = %.2f units  ",R);
// using sine rule,we get...
    A = (180.0/3.1415926)*asin(a/(2.0*R));//  value of pi should be upto 7
    B = (180.0/3.1415926)*asin(b/(2.0*R));//  decimal places of accuracy and also
    C = (180.0/3.1415926)*asin(c/(2.0*R));//  note that the 7th decimal placeis
//  6 and not 7 as it had to be if were
    if(A==90.0 || B==90.0 || C==90.0)     //  approximated to 7 decimal places
        printf("\nThe triangle is RIGHT ANGLED");
    if(A<90.0 && B<90.0 && C<90.0)
        printf("\nThe triangle is ACUTE ANGLED");
    if(A>90.0 || B>90.0 || C>90.0)
        printf("\nThe triangle is OBTUSE ANGLED");

    printf("\nThe angles are as follows :");
    printf("\nA = %.2f degrees           ",A);
    printf("\nB = %.2f degrees           ",B);
    printf("\nC = %.2f degrees           ",C);
    printf("\nWhere A,B,C stand for angles opposite to sides \n\t"
           " %.2f , %.2f , %.2f respectively \n\n",a,b,c);

    getchar();
    return 0;
}

//end of program

To see such C code reviews refer blog archieve at right side or click CCode lable for till posted posts list.

...till next post, bye-bye and take care.

No comments:

Post a Comment