0 / 0 / 0
Регистрация: 14.06.2016
Сообщений: 11

Найти номера пары точек, расстояние между которыми наибольшее

15.06.2016, 22:04. Показов 1451. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Даны координаты п точек на плоскости (x1, y1), •••(xn , yn) (n < 30). Найти номера пары то-чек, расстояние между которыми наибольшее (считать, что такая пара единственная).
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.06.2016, 22:04
Ответы с готовыми решениями:

Найти номера пары точек, расстояние между которыми наибольшее
Даны координаты n точек на плоскости: (X1, Y1),…, (Xn , Yn) (n≤30). Найти номе-ра пары точек, расстояние между которыми наибольшее...

Найти номера двух точек, расстояние между которыми наибольшее
Даны координаты N точек на плоскости x(0), y(0) ,..., x(n), y(n) (N=20). Найти номера двух точек, расстояние между которыми наибольшее...

Найти номера двух точек, расстояние между которыми наибольшее
Даны координаты N точек на плоскости x(0), y(0) ,..., x(n), y(n) (N=20). Найти номера двух точек, расстояние между которыми наибольшее ...

3
77 / 77 / 42
Регистрация: 30.09.2014
Сообщений: 342
16.06.2016, 10:19
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
  static void Main(string[] args)
        {
            int[,] MyArray = new int[10, 2] { { 0, 1 }, { -3, 12 }, {0,1},{0,1},{10,1},{0,0},{0,1},{0,3},{0,-2},{0,2}};
 
            /*
            Random gen = new Random();
 
            for (int i = 0; i < MyArray.GetLength(0); i++)
                for (int j = 0; j < MyArray.GetLength(1); j++)
                    MyArray[i,j] = gen.Next(0, 30);
            */
 
            for (int i = 0; i < MyArray.GetLength(0); i++)
            {
                Console.WriteLine("\n");
                for (int j = 0; j < MyArray.GetLength(1); j++)
                    Console.Write(MyArray[i, j] + "\t");
 
            }
 
            Console.WriteLine("\n________________\n");
 
           double MaxL = 0 ;
           int[] Point1 = new int[2];
           int[] Point2 = new int[2];
 
 
           for (int i = 0; i < MyArray.GetLength(0); i++)
               for (int j = i + 1; j < MyArray.GetLength(0); j++)
 
 
                   if (Math.Sqrt(Math.Pow(MyArray[i, 0] - MyArray[j, 0], 2) + Math.Pow(MyArray[i, 1] - MyArray[j, 1], 2)) > MaxL)
                   {
                       MaxL = Math.Sqrt(Math.Pow(MyArray[i, 0] - MyArray[j, 0], 2) + Math.Pow(MyArray[i, 1] - MyArray[j, 1], 2));
                       Point1[0] = MyArray[i, 0];
                       Point1[1] = MyArray[i, 1];
 
                       Point2[0] = MyArray[j, 0];
                       Point2[1] = MyArray[j, 1];
 
 
                   }
 
 
          // Console.WriteLine(string.Format("Точка1 : {0},{1}  ,Точка2 : {2},{3}  "), Point1[0], Point1[1], Point2[0], Point2[1]);
 
           Console.WriteLine("Точка 1 " + Point1[0] + "\t" + Point1[1]);
 
           Console.WriteLine("Точка 2 " + Point2[0] + "\t" + Point2[1]);
 
           Console.WriteLine("Растояние между точками"+ MaxL);
 
          
 
 
        }
Спасибо если помог
0
Эксперт .NETАвтор FAQ
 Аватар для Storm23
10428 / 5158 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
16.06.2016, 10:42
OTT,
По вашему коду:
1) Хранение координат точек в двух параллельных массивах - bad practice. Нужно использовать либо System.Drawing.Point, либо создать свой класс Point.
2) double MaxL = 0; => double MaxL = -1;. В противном случае ваш алгоритм не найдет пару точек, если их координаты совпадают.
3) Если подумать, то извлечение корня - ненужная операция в данном случае. Зато она дорогая.
4) Задачу можно решить за O(N), используя построение выпуклой оболочки.
0
77 / 77 / 42
Регистрация: 30.09.2014
Сообщений: 342
16.06.2016, 12:02
Учел замечания, ток не понял что вы имеете в виду в 4 пункте (

класс Point

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
    class Point
    {
 
        public int X;
        public int Y;
 
 
        public Point(int MyX, int MyY)
        {
            X = MyX;
            Y = MyY;
        }
 
 
        public static double Virtuallength(Point Point1, Point Point2)
        {
 
            return Math.Pow(Point1.X-Point2.X, 2) + Math.Pow(Point1.Y-Point2.Y,2);
 
 
 
        }
 
 
    }

ну и в консоле пишем

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
            
            Random gen = new Random();
 
            double Max = -1;
            int k = 0, n = 0;
 
            Point[] AllPoint = new Point[gen.Next(5, 30)];
            Point Point1= new Point(0,0);
            Point Point2 = new Point(0, 0);
 
            for (int i = 0; i < AllPoint.Length; i++)
            {
                AllPoint[i] = new Point(gen.Next(-10, 10), gen.Next(-10, 10));
                Console.WriteLine("Точка{0} : \tX={1}  \tY={2}", i + 1, AllPoint[i].X, AllPoint[i].Y);
 
            }
 
            for (int i = 0; i < AllPoint.Length; i++)
                for (int j = 0; j < AllPoint.Length; j++)
            {
                if(Max<Point.Virtuallength(AllPoint[i],AllPoint[j]))
                {
                    Max=Point.Virtuallength(AllPoint[i],AllPoint[j]);
                    Point1=AllPoint[i];
                    Point2=AllPoint[j];
                    k = i+1;
                    n = j+1;
 
                }
 
            }
 
            Console.WriteLine("Максимальное расстояние между точками  Точка{4} \t{0},{1} \t Точка{5} \t{2},{3} ", Point1.X, Point1.Y, Point2.X, Point2.Y,k,n);
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.06.2016, 12:02
Помогаю со студенческими работами здесь

Найти номера двух точек, расстояние между которыми наибольшее
Задача: Даны координаты n-точек на плоскости (x;y.....Xn;Yn//n-может находится в диапазоне от 1-20//). Найти номера двух...

Найти номера двух точек, расстояние между которыми наибольшее
Даны координаты N точек на плоскости x(0),y(0),...x(n),y(n) (N=20). Найти номера двух точек, расстояние между которыми наибольшее...

Найти номера двух точек, расстояние между которыми наибольшее
В общем начал изучать С#, это мой первый язык программирования, я застрял на этой теме. Если можно с комментариями и код попроще ) ...

Найти две из трех точек на плоскости расстояние между которыми минимально
Помогите пожалуйста написать задачку )в консольном предложении( // Разработать метод который вычисляет длину отирезка по координатам...

Найти номера пары точек, расстояние между которыми наибольшее
. Даны координаты n точек на плоскости: (X1, Y1),…, (Xn , Yn) (n≤30). Найти номе-ра пары точек, расстояние...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

Новые блоги и статьи
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru