Множества

  • Автор темы Nadin85
  • Дата начала
N

Nadin85

#1
Задано множества точек на плоскости. Найти такую точку, от которой сумма расстояний до других точек наименьшая.
Суть лабы получилась, но теперь мне нужно, чтоб пользователь мог сам вводить точки и их координаты в командной строке, и тогда прога находила бы минимальную сумму расстояний до других точек. Как это реализовать? Помогите пожалуйсто!!! Вот привожу свой листинг, когда точки заданы в коде:
Код:
 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));
}
}