# Calculating the distance between 2 latitudes and longitudes that are saved in a text file?

I've looked around and still couldn't find anything to help me really! I've written a program to calculate the distance between 2 cities using their Latitudes and Longitudes, the cities details are saved in a file then loaded in my program into a BST! So far everything works fine except when i run the codes that is suppose to calculate the distance i get the same answer for every cities! Am not quite sure as to why i keep getting the same answer for every cities! Please help point me into the right direction?

here are the codes to calculate the distance

```#include <cmath>
#define pi 3.14159265358979323846

string userResponse;
float globalLat1, globalLon1, globalLat2, globalLon2;

for(int j= 0; j < 2; j++){
string whatever;
if (j==0){
bool hasbeenfound = false;
do{
//ask the user to enter their first city of their choice
whatever = "first ";
cout << "Enter your " + whatever + "City" << endl;
cout << "-------------------" << endl;
cin >> userResponse;
cout << endl;
if (Cities->search(userResponse)) //check if the entered city already exist
{
hasbeenfound = true;
}
else{
cout << endl;
}
//globalCity1 = Cities->sRootName;
globalLat1 = Cities->sLatitude;
globalLon1 = Cities->sLongitude;
}
while(hasbeenfound == false); //while the entered city hasn't been found, repeat the process

}else
{
bool hasbeenfound = false;
do{
//ask the user to enter their second city of their choice
whatever = "second ";
cout << endl;
cout << "Enter your " + whatever + "City" << endl;
cout << "-------------------" << endl;
cin >> userResponse;
cout << endl;
if (Cities->search(userResponse)) //check if the entered city already exist
{
hasbeenfound = true;
}
else{
}
//globalCity2 = Cities->sRootName;
globalLat2 = Cities->sLatitude;
globalLon2 = Cities->sLongitude;
}
while(hasbeenfound == false); //while the entered city hasn't been found, repeat the process

}
}

// This function converts decimal degrees to radians
return (deg * pi / 180);
};

//  This function converts radians to decimal degrees
return (rad * 180 / pi);
};

//distance calculations
cout << endl;
distan = distan * 60 * 1.1515;
distan = (6371 * pi * distan)/180;
cout << "The Distance between the to cities is: " << distan << " kilometers" << endl;
```

```#include <math.h>
#include <cmath>

// This function converts decimal degrees to radians
return (deg * M_PI / 180);
}

//  This function converts radians to decimal degrees
return (rad * 180 / M_PI);
}

/**
* Returns the distance between two points on the Earth.
* Direct translation from http://en.wikipedia.org/wiki/Haversine_formula
* @param lat1d Latitude of the first point in degrees
* @param lon1d Longitude of the first point in degrees
* @param lat2d Latitude of the second point in degrees
* @param lon2d Longitude of the second point in degrees
* @return The distance between the two points in kilometers
*/
double distanceEarth(double lat1d, double lon1d, double lat2d, double lon2d) {
double lat1r, lon1r, lat2r, lon2r, u, v;
u = sin((lat2r - lat1r)/2);
v = sin((lon2r - lon1r)/2);
return 2.0 * earthRadiusKm * asin(sqrt(u * u + cos(lat1r) * cos(lat2r) * v * v));
}
```

for people who need in swift:

```  // Haversine formula:

func deg2rad(_ deg: Double) ->Double {
return deg * Double.pi  / 180.0
}

func distanceEarth(lat1d: Double, lon1d: Double, lat2d: Double, lon2d: Double) ->Double {

let u = sin((lat2r - lat1r)/2);
let v = sin((lon2r - lon1r)/2);
return 2.0 * earthRadiusKm * asin(sqrt(u * u + cos(lat1r) * cos(lat2r) * v * v));
}

//test here.... https://andrew.hedges.name/experiments/haversine/

func doTestHaversine(){

let km = distanceEarth(lat1d: 38.898556, lon1d: -77.037852, lat2d: 38.897147, lon2d: -77.043934)
print(km)  // should show : 0.549 or similar..
}
```

Using boost.geometry

```typedef boost::geometry::model::point<
double, 2, boost::geometry::cs::spherical_equatorial<boost::geometry::degree>
> spherical_point;

spherical_point p(lon1_degree, lat1_degree);
spherical_point q(lon2_degree, lat2_degree);
double dist = boost::geometry::distance(p, q);
double const earth_radius = 6371.0; // Km
```

This is the method that I would use for finding the distance Or this, not concidering the "bend" of the Earth 