Calculate Distance in Nautical Miles: C Program


Write a C program to receive values of latitude(L1, L2) and longitude(G1, G2), in degrees, of two places on the earth and output the distance (D) between them in nautical miles.

Formula For Distance in Nautical Miles

D = 3963 * acos( sin(lat1) * sin(lat2) + cos(lat1) * cos(lat2) * cos(lon2 – lon1) );

where lat1, lat2 are latitudes. lon1, lon2 are longitude.

Formula To Convert Degree To Radian

radian = degree * (PI/180.0);
where PI is 3.141592

Logic To Find Distance In Nautical Miles

User input the values of latitude(lat1, lat2) and longitude(lon1, lon2 ), in degrees. We convert it to radians. Next we use the formula below:
D = 3963 * acos( sin(lat1) * sin(lat2) + cos(lat1) * cos(lat2) * cos(lon2 – lon1) );
and out put the result on to the console.

Source Code: Calculate Distance in Nautical Miles: C Program

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

int main()
{
    float lat1, lat2, lon1, lon2, D;
    const float PI = 3.141592;

    printf("Enter latitude(L1, L2)\n");
    scanf("%f%f", &lat1, &lat2);

    printf("Enter longitude(G1, G2)\n");
    scanf("%f%f", &lon1, &lon2);
  
    /* Convert Degrees To Radian */    lat1 = lat1 * ( PI / 180.0 );
    lat2 = lat2 * ( PI / 180.0 );
    lon1 = lon1 * ( PI / 180.0 );
    lon2 = lon2 * ( PI / 180.0 );

    D = 3963 * acos( sin(lat1) * sin(lat2) + cos(lat1) * cos(lat2) * cos(lon2 - lon1) );

    printf("Distance in nautical miles is %f\n", D);

    return 0;
}

Output:
Enter latitude(L1, L2)
52.3
43.2
Enter longitude(G1, G2)
12.3
15.6
Distance in nautical miles is 647.682434

Calculate Distance in Nautical Miles: C Program


[youtube https://www.youtube.com/watch?v=d88pWBloIOE]

YouTube Link: https://www.youtube.com/watch?v=d88pWBloIOE [Watch the Video In Full Screen.]


For list of all c programming interviews / viva question and answers visit: C Programming Interview / Viva Q&A List

For full C programming language free video tutorial list visit:C Programming: Beginner To Advance To Expert

Leave a Reply

Your email address will not be published. Required fields are marked *