Looks like your having trouble with the distance formula for two 3d points.

Distance formula for 2d points is sqrt( (x1 - x2)^2 + (y1 - y2)^2 )

You can extend this for 3d points simply by sqrt( (x1 - x2)^2 + (y1 - y2)^2 + (z1 - z2)^2 )

Your other problem was with arrays. if you know the size of your array you can use

Point myArray[10];

In the case of the below program the size of the array is not known until runtime which means we need to dynamically allocate our array such as this.

int numPoints;

cin >> numPoints;

Point* ptrArray = new Point[numPoints];

When doing this you must be sure to delete any memory that you allocate at run time with the usuage of the delete operator. like

delete[] ptrArray;

Below I have provided a sample output and program that produces the output. This probably isn't exactly what your teacher wants so I wouldn't just hand it in. Read carefully what your instructor is asking for and provide exactly that.

******BEGIN OUTPUT*******

How many points do you want to enter? 3

Enter the values for point 1. 0 0 0

Enter the values for point 2. 1 1 1

Enter the values for point 3. 5 0 0

The points you have entered are

Point 1 = (0, 0, 0)

Point 2 = (1, 1, 1)

Point 3 = (5, 0, 0)

Enter the numbers of the points you want to calculate the distance of.

(Note: enter 0 if you want to quit)

1 2

The distance between the point (0, 0, 0) and the point (1, 1, 1) is 1.73205

Enter the numbers of the points you want to calculate the distance of.

(Note: enter 0 if you want to quit)

1 3

The distance between the point (0, 0, 0) and the point (5, 0, 0) is 5

Enter the numbers of the points you want to calculate the distance of.

(Note: enter 0 if you want to quit)

0

******END OUTPUT*******

The actual program

#include <iostream.h>

#include <math.h>

struct Point {

double x;

double y;

double z;

};

void inputPoint(Point &p)

{

cin >> p.x >> p.y >> p.z;

}

void outputPoint(const Point& p)

{

cout << "(" << p.x << ", " << p.y << ", " << p.z << ")";

}

double getDistance(const Point& p1, const Point& p2)

{

double distance;

distance =

sqrt( (p1.x - p2.x) * (p1.x - p2.x)

+ (p1.y - p2.y) * (p1.y - p2.y)

+ (p1.z - p2.z) * (p1.z - p2.z)

);

return distance;

}

void outputDistanceBetween(const Point& p1, const Point& p2)

{

cout << "The distance between the point ";

outputPoint(p1);

cout << " and the point ";

outputPoint(p2);

cout << " is " << getDistance(p1, p2) << endl;

}

void inputPointsForDistanceComparison(int& point1Index, int& point2Index)

{

cout << endl;

cout << "Enter the numbers of the points you want to calculate the distance of." << endl

<< "(Note: enter 0 if you want to quit)" << endl;

cin >> point1Index;

cin >> point2Index;

}

int main(int argc, char* argv[])

{

cout << "How many points do you want to enter? ";

int numPoints;

cin >> numPoints;

Point* ptrPoints = new Point[numPoints];

for(int i = 0; i < numPoints; i++)

{

cout << endl << "Enter the values for point " << i + 1 << ". ";

inputPoint(ptrPoints[i]);

}

cout << endl << endl << "The points you have entered are " << endl;

for(int i = 0; i < numPoints; i++)

{

cout << "Point " << i + 1 << " = ";

outputPoint(ptrPoints[i]);

cout << endl;

}

int point1Index, point2Index;

inputPointsForDistanceComparison(point1Index, point2Index);

while(point1Index != 0)

{

cout << endl;

//validate the indexes;

if(point2Index <= 0 || point2Index > numPoints)

{

cout << "Point " << point2Index << " is not a valid point " << endl;

inputPointsForDistanceComparison(point1Index, point2Index);

continue;

}

//set the proper indexes

point1Index--;

point2Index--;

//this was done because we listed the points 1, 2, 3, ... num points

outputDistanceBetween(ptrPoints[point1Index], ptrPoints[point2Index]);

inputPointsForDistanceComparison(point1Index, point2Index);

}

//finally remebmer to delete the memory we allocated

delete[] ptrPoints;

return 0;

}

Distance formula for 2d points is sqrt( (x1 - x2)^2 + (y1 - y2)^2 )

You can extend this for 3d points simply by sqrt( (x1 - x2)^2 + (y1 - y2)^2 + (z1 - z2)^2 )

Your other problem was with arrays. if you know the size of your array you can use

Point myArray[10];

In the case of the below program the size of the array is not known until runtime which means we need to dynamically allocate our array such as this.

int numPoints;

cin >> numPoints;

Point* ptrArray = new Point[numPoints];

When doing this you must be sure to delete any memory that you allocate at run time with the usuage of the delete operator. like

delete[] ptrArray;

Below I have provided a sample output and program that produces the output. This probably isn't exactly what your teacher wants so I wouldn't just hand it in. Read carefully what your instructor is asking for and provide exactly that.

******BEGIN OUTPUT*******

How many points do you want to enter? 3

Enter the values for point 1. 0 0 0

Enter the values for point 2. 1 1 1

Enter the values for point 3. 5 0 0

The points you have entered are

Point 1 = (0, 0, 0)

Point 2 = (1, 1, 1)

Point 3 = (5, 0, 0)

Enter the numbers of the points you want to calculate the distance of.

(Note: enter 0 if you want to quit)

1 2

The distance between the point (0, 0, 0) and the point (1, 1, 1) is 1.73205

Enter the numbers of the points you want to calculate the distance of.

(Note: enter 0 if you want to quit)

1 3

The distance between the point (0, 0, 0) and the point (5, 0, 0) is 5

Enter the numbers of the points you want to calculate the distance of.

(Note: enter 0 if you want to quit)

0

******END OUTPUT*******

The actual program

#include <iostream.h>

#include <math.h>

struct Point {

double x;

double y;

double z;

};

void inputPoint(Point &p)

{

cin >> p.x >> p.y >> p.z;

}

void outputPoint(const Point& p)

{

cout << "(" << p.x << ", " << p.y << ", " << p.z << ")";

}

double getDistance(const Point& p1, const Point& p2)

{

double distance;

distance =

sqrt( (p1.x - p2.x) * (p1.x - p2.x)

+ (p1.y - p2.y) * (p1.y - p2.y)

+ (p1.z - p2.z) * (p1.z - p2.z)

);

return distance;

}

void outputDistanceBetween(cons

{

cout << "The distance between the point ";

outputPoint(p1);

cout << " and the point ";

outputPoint(p2);

cout << " is " << getDistance(p1, p2) << endl;

}

void inputPointsForDistanceComp

{

cout << endl;

cout << "Enter the numbers of the points you want to calculate the distance of." << endl

<< "(Note: enter 0 if you want to quit)" << endl;

cin >> point1Index;

cin >> point2Index;

}

int main(int argc, char* argv[])

{

cout << "How many points do you want to enter? ";

int numPoints;

cin >> numPoints;

Point* ptrPoints = new Point[numPoints];

for(int i = 0; i < numPoints; i++)

{

cout << endl << "Enter the values for point " << i + 1 << ". ";

inputPoint(ptrPoints[i]);

}

cout << endl << endl << "The points you have entered are " << endl;

for(int i = 0; i < numPoints; i++)

{

cout << "Point " << i + 1 << " = ";

outputPoint(ptrPoints[i]);

cout << endl;

}

int point1Index, point2Index;

inputPointsForDistanceComp

while(point1Index != 0)

{

cout << endl;

//validate the indexes;

if(point2Index <= 0 || point2Index > numPoints)

{

cout << "Point " << point2Index << " is not a valid point " << endl;

inputPointsForDistanceComp

continue;

}

//set the proper indexes

point1Index--;

point2Index--;

//this was done because we listed the points 1, 2, 3, ... num points

outputDistanceBetween(ptrP

inputPointsForDistanceComp

}

//finally remebmer to delete the memory we allocated

delete[] ptrPoints;

return 0;

}