Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Множества
Форум программистов > Системное программирование > Java
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));
     }
}
festevall
а это что?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2008 IPS, Inc.