N
Nadin85
Задано множества точек на плоскости. Найти такую точку, от которой сумма расстояний до других точек наименьшая.
Суть лабы получилась, но теперь мне нужно, чтоб пользователь мог сам вводить точки и их координаты в командной строке, и тогда прога находила бы минимальную сумму расстояний до других точек. Как это реализовать? Помогите пожалуйсто!!! Вот привожу свой листинг, когда точки заданы в коде:
Суть лабы получилась, но теперь мне нужно, чтоб пользователь мог сам вводить точки и их координаты в командной строке, и тогда прога находила бы минимальную сумму расстояний до других точек. Как это реализовать? Помогите пожалуйсто!!! Вот привожу свой листинг, когда точки заданы в коде:
Код:
class Locate
{
private double x, y; /*по умолчанию x=0 и y=0 */
public Locate()
{
x = 1;
y = 1;
}
public void setX(double a)
{
x = a;
}
void setY(double b)
{ /*видимость по умолчанию*/
y = b;
}
public double getX()
{
return x;
}
public double getY()
{
return y;
}
}
public class Distance
{
public static void main(String[] args)
{
//локальные переменные не являются членами класса
Locate O = new Locate();
Locate A = new Locate();
Locate B = new Locate();
Locate C = new Locate();
double dx;
double dy;
double distance1;
double distance2;
double distance3;
double summa1;
double summa2;
double summa3;
O.setX(5);
O.setY(10);
A.setX(2);
A.setY(6);
B.setX(8);
B.setY(6);
C.setX(4);
C.setY(2);
dx = O.getX() - A.getX(); //3
dy = O.getY() - A.getY(); //4
/* вычисление расстояния */
distance1 = Math.sqrt(dx * dx + dy * dy); //вычисление гипотенузы треугольника, расстояние 5
dx = B.getX() - O.getX(); //3
dy = O.getY() - B.getY(); //4
distance2 = Math.sqrt(dx * dx + dy * dy); //вычисление гипотенузы треугольника, расстояние 5
dx = O.getX() - C.getX(); //1
dy = O.getY() - C.getY(); //8
distance3 = Math.sqrt(dx * dx + dy * dy); //вычисление гипотенузы треугольника, расстояние 8.06
summa1 = distance1 + distance2 + distance3; //18.06
O.setX(6);
O.setY(7);
dx = O.getX() - A.getX(); //4
dy = A.getY() - O.getY(); //1
distance1 = Math.sqrt(dx * dx + dy * dy); //4.1
dx = B.getX() - O.getX(); //2
dy = B.getY() - O.getY(); //1
distance2 = Math.sqrt(dx * dx + dy * dy); //2.24
dx = O.getX() - C.getX(); //2
dy = O.getY() - C.getY(); //5
distance3 = Math.sqrt(dx * dx + dy * dy); //5.39
summa2 = distance1 + distance2 + distance3; //11.73
O.setX(6);
O.setY(4);
dx = O.getX() - A.getX(); //4
dy = A.getY() - O.getY(); //2
distance1 = Math.sqrt(dx * dx + dy * dy); //4.47
dx = B.getX() - O.getX(); //2
dy = B.getY() - O.getY(); //2
distance2 = Math.sqrt(dx * dx + dy * dy); //2.83
dx = O.getX() - C.getX(); //2
dy = O.getY() - C.getY(); //2
distance3 = Math.sqrt(dx * dx + dy * dy); //2.83
summa3 = distance1 + distance2 + distance3; //10.13
double min12 = java.lang.Math.min(summa1, summa2);
System.out.println("Min Summa = " + java.lang.Math.min(min12, summa3));
}
}