C Program For Law Of Sine Problems

With the law of sine, you can find any unknown angle of a given triangle or the length of a particular side of a triangle or the length of a particular side of a triangle. This is a fundamental concept of trigonometry.

Advertisements

We used Dev-C++ to compile the program, but you may use any other standard C compiler. This program make use of math header – math.h  especially, two trig functions – sin () function and asin () function at lot. So if you are choosing a different compiler then use the correct math header file.

Before you try the example, learn following C programming concepts. You can skip it if already know it well.

Problem Definition

The law of sine is given below. The triangle has three sides a, \hspace{1ex} b, and c; It also has three angles – \angle A, \hspace{1ex} \angle B and \angle C.

Figure1: Law of Sine for a Triangle
Figure1: Law of Sine for a Triangle

In general, there are two cases for problems involving the law of sine.

Case 1: When the length of two sides is given and the angle opposite to one of the sides with length is given.

Figure2: Law of sine for two sides and 1 angle
Figure2: Law of sine for two sides and 1 angle

When the length of two side – A and B are given and the angle opposite to side \hspace{1ex} A is given. Then using law of sine

\begin{aligned}&X \hspace{1ex} = \hspace{1ex} sin \hspace{1ex} \frac{A}{a}\\ \\
&sin  \hspace{1ex}\frac{B}{b} \hspace{1ex} = \hspace{1ex} X\\ \\
&sin \hspace{1ex} B \hspace{1ex} =\hspace{1ex}  X \hspace{1ex}\ast \hspace{1ex}b\\ \\
&\angle {B }\hspace{1ex} = \hspace{1ex} arcsin ( X \ast b)
\end{aligned}

This the way to find the value of sin B and then using arcsin to find the \angle B.

Case 2: When 2 angles – angle A and angle B are given with length of the side opposite to angle A or angle B.

When two angles and length of at least one side opposite to \angle A or \angle B is given. Find the sin A and sin B values first.

Find X \hspace{1ex} = \hspace{1ex} sin A/a or sin B/b, whichever is given in the problem.

Advertisements

The length of side

\begin{aligned}b \hspace{1ex} = \hspace{1ex} sin\hspace{2px} B \cdot X\end{aligned}

This is how you will find the value of the length of side b when \angle A and \angle B is given along with the length of side a.

Figure 3: Two Angles and 1 Side for Law of Sine Problems
Figure 3: Two Angles and 1 Side for Law of Sine Problems

In next section, you will find the flowchart of the program for the law of sine and the above two cases to understand the logic of the program.

Flowchart – Program for Law of Sine Problems

Flowchart Sine Law
Flowchart Sine Law

The next flowchart is of function s1() which covers the case 1 of the law of sine problems.

Flowchart Sine Law 2 Sides and 1 Angle
Flowchart Sine Law 2 Sides and 1 Angle

The flowchart for function s2 () that covers the case 2 of the law of sine problems is given below.

Flowchart Sine Law 2 Angle and 1 Side
Flowchart Sine Law 2 Angle and 1 Side

Program Code – Program for Law of Sine Problems

/* C Program for solving law of sine problems */
#include <stdio.h>
#include <math.h>
#include<stdlib.h>
/* Variable declarations */
        int ch,i;
        float a, b, q, p, deg;
        float angle,angle2, res;
/* Function declaration */
        void s1();
        void s2();
int main()
{
        for(i=0;i < 30;i++)
        printf("*");printf("\n\n");
        printf("\tMenu\n\n");
        for(i=0;i < 30;i++)
        printf("*");printf("\n\n");
                printf("1.Sine Problem with 2 Sides and 1 Angle:\n");
                printf("2.Sine Problem with 2 Angles and 1 Side:\n");
                printf("3.Quit using any other number:\n\n");
        for(i=0;i < 30;i++)
        printf("*");printf("\n\n");
        while(1)
        {
                 printf("Enter your Choice:");
                 scanf("%d",& ch);
                 if(ch == 1)
                {
                     s1();
                }
                else if(ch == 2)
                {
                     s2();
                }
                else if(ch == 3)
                {
                     exit(0);
                }
               else
               {
                     printf("Wrong choice ! Try again:\n");
               }
        }
               system("PAUSE");
               return 0;
}
/* Main function ends */
/* Function definition - s1() */
void s1()
{
        float pi = 3.141;
        for(i=0;i < 30;i++)
        printf("_");printf("\n\n");
                printf("Enter value for side with angle:");
                scanf("%f",&a);
                printf("Enter value for side without angle:");
                scanf("%f",&b);
                printf("Enter the angle(degrees):");
                scanf("%f",&angle);
        for(i=0;i < 30;i++)
        printf("_");printf("\n\n");
                angle = angle * (pi/180);
                q = sin(angle);
                p = b * (q/a);
                deg = asin(p);
                res = deg * (180/pi);
        for(i=0;i < 30;i++)
        printf("_");printf("\n\n");
                printf("Angle B = %f\n",res);
        for(i=0;i < 30;i++)
        printf("_");printf("\n\n");
}
/* Function definition - s2() */
void s2()
{
        float pi = 3.141;
        for(i=0;i < 30;i++)
        printf("_");printf("\n\n");
                printf("Enter value of side a with angle:");
                scanf("%f",&a);
                printf("Enter angle A for side a:");
                scanf("%f",&angle);
                printf("Enter value angle B of side b:");
                scanf("%f",&angle2);
        for(i=0;i < 30;i++)
                printf("_");printf("\n\n");
                angle = angle * (pi/180);
                angle2 = angle2 * (pi/180);
                q = sin(angle);
                p = sin(angle2);
                deg = q/a;
                b = p/deg;
        for(i=0;i < 30;i++)
        printf("_");printf("\n\n");
                printf("Side b = %f\n",b);
       for(i=0;i<30;i++)
       printf("_");printf("\n\n");
}

Outputs from the Program

The program gives three choices during run time

  1. Apply the law of sine when the length of 2 sides and 1 angle opposite to a given side is available.
  2. Apply the law of sine when 2 angles are given and length of 1 side opposite to an angle is given.
  3. Quit the program

The output from both the cases are given below, you should run the program and verify the output for yourself.

                                Menu
***********************************************************************
1.Sine Problem with 2 Sides and 1 Angle:
2.Sine Problem with 2 Angles and 1 Side:
3.Quit using any other number:
***********************************************************************
Enter your Choice:1
_______________________________________________________________________
Enter value for side with angle:5
Enter value for side without angle:4
Enter the angle(degrees):60
_______________________________________________________________________
_______________________________________________________________________
Angle B = 43.855770
_______________________________________________________________________
Enter your Choice:_

Now, we will test option 2 from the menu.

                                Menu
***********************************************************************
1.Sine Problem with 2 Sides and 1 Angle:
2.Sine Problem with 2 Angles and 1 Side:
3.Quit using any other number:
***********************************************************************
Enter your Choice:2
_______________________________________________________________________
Enter value of side a with angle:30
Enter angle A for side a:14
Enter value angle B of side b:55
_______________________________________________________________________
_______________________________________________________________________
Side b = 101.586449
_______________________________________________________________________
Enter your Choice:_

Advertisements

Ads Blocker Image Powered by Code Help Pro

Ads Blocker Detected!!!

We have detected that you are using extensions to block ads. Please support us by disabling these ads blocker.