Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
0 / 0 / 0
Регистрация: 02.12.2013
Сообщений: 3
.NET 4.x

Найти две наиболее удаленные друг от друга точки

02.12.2013, 23:22. Показов 2858. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Товарищи-господа, помогите, пожалуйста, абсолютному "чайнику"!
Есть задача: "Дано множество точек на плоскости. Найти две наиболее удаленные друг от друга точки",
нужен алгоритм её решения на псевдокоде.
Желательно, с разъяснением. Чем подробнее, тем лучше.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
02.12.2013, 23:22
Ответы с готовыми решениями:

Структура SPoint. Найти две наиболее близко расположенных друг к другу точки
Используя структуру SPoint для хранения координат точки: Найти две наиболее близко расположенных друг к другу точки. Прошу помощи с...

Как заменить две буквы в слове друг на друга?
Комрады, помогите нубу, а то я все никак не могу придумать, как в одном слове поменять 2 буквы друг на друга. Например ввожу слово ВОДА а...

Создайте программу, сравнивающие две структуры вложенных друг в друга папок
В C# пару дней. Задача: Создайте программу, сравнивающие две структуры вложенных друг в друга папок, заданных пользователем в...

4
foo();
 Аватар для rattrapper
886 / 587 / 222
Регистрация: 03.07.2013
Сообщений: 1,549
Записей в блоге: 2
02.12.2013, 23:52
Получился вовсе не псевдокод, а очень даже норм. Но уже нету времени подробно комментить. Ну, в любом случае, взгляните
Кликните здесь для просмотра всего текста
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
struct Point // структура для точек. наши точки будут хранится в таком формате
{
    public double X; //координата х
    public double Y; //у
}
class Program
{
    static void Main(string[] args)
    {
        Point[] pntArray = new Point[]{ //массив точек
            new Point(){X = 0, Y = 0}, //заполняем массив в коде
            new Point(){X = -4, Y = 3},//с этими значениями можете поэксперементировать
            new Point(){X = 12, Y = 8},/*если совсем не разбираетесь в c# - 
             - не изменяйте количество точек*/
            new Point(){X = 9, Y = -6},
            new Point(){X = 3, Y = 7}
        };
        int[] result = new int[2];//индексы искомых точек в массиве
        double l = 0, temp;//временные переменные для сохранения и сравнения расстояния
        for(int i = 0; i<5; i++)//задаем цикл для сравнений
            for(int j = 0; j<5; j++)
                if ((temp = (pntArray[i].X-pntArray[j].X)* //сравниваем расстояния
                    (pntArray[i].X-pntArray[j].X) - 
                    (pntArray[i].Y-pntArray[j].Y)
                    *(pntArray[i].Y-pntArray[j].Y)) >= l)
                {
                    l = temp;//если значение больше последнего - сохраняем точки
                    result[0] = i;
                    result[1] = j;
                }
        Console.WriteLine("Максимальное расстояние {0} между точками ({1},{2}) " +
            "({3},{4})", Math.Sqrt(l), pntArray[result[0]].X, pntArray[result[0]].Y,
            pntArray[result[1]].X, pntArray[result[1]].Y);//вывод результата
        Console.ReadKey();
    }
}
0
0 / 0 / 0
Регистрация: 02.12.2013
Сообщений: 3
03.12.2013, 00:11  [ТС]
Благодарю, взглянул, и даже запустил, но это не совсем то...
Ваша программа выдаёт уже конечный ответ на заданные в самом коде координаты, а нужно такое консольное приложение, чтобы в него можно было ввести любые координаты любого количества точек, а оно выдавало бы координаты наиболее удалённых. А у меня то ли с недосыпа, то ли с перепоя, что-то совсем мозг отказывает...
Либо хотя бы псевдокод нужен - в нормальный уже сам переделаю.
0
foo();
 Аватар для rattrapper
886 / 587 / 222
Регистрация: 03.07.2013
Сообщений: 1,549
Записей в блоге: 2
03.12.2013, 22:54
Цитата Сообщение от Ksedorium Посмотреть сообщение
нужно такое консольное приложение, чтобы в него можно было ввести любые координаты любого количества точек, а оно выдавало бы координаты наиболее удалённых
мне нечего делать
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
struct Point // структура для точек. наши точки будут хранится в таком формате
{
    public double X; //координата х
    public double Y; //у
    public static Point[] Get(int count)//метод заполнения массива в консоли
    {
        Console.WriteLine("Введите координаты для {0} точек", count);
        Point[]result = new Point[count];
        for(int i = 0; i<count;i++)
        {
 
            Console.Write("Точка {0}: \nx = ", i + 1);
            result[i].X = double.Parse(Console.ReadLine());
            Console.Write("y = ");
            result[i].Y = double.Parse(Console.ReadLine());
        }
        return result;
    }
}
class Program
{
    static void Main(string[] args)
    {
        Console.Write("Введите количество точек :");
        int count = int.Parse(Console.ReadLine());
        Point[] pntArray = Point.Get(count);
        int[] result = new int[2];//индексы искомых точек в массиве
        double l = 0, temp;//временные переменные для сохранения и сравнения расстояния
        for (int i = 0; i < count; i++)//задаем цикл для сравнений
            for (int j = 0; j < count; j++)
                if ((temp = (pntArray[i].X - pntArray[j].X) * //сравниваем расстояния
                    (pntArray[i].X - pntArray[j].X) +
                    (pntArray[i].Y - pntArray[j].Y)
                    * (pntArray[i].Y - pntArray[j].Y)) > l)
                {
                    l = temp;//если значение больше последнего - сохраняем точки
                    result[0] = i;
                    result[1] = j;
                }
        Console.WriteLine("Максимальное расстояние {0} между точками ({1},{2}) " +
            "({3},{4})", Math.Sqrt(l), pntArray[result[0]].X, pntArray[result[0]].Y,
            pntArray[result[1]].X, pntArray[result[1]].Y);//вывод результата
        Console.ReadKey();
    }
}
1
0 / 0 / 0
Регистрация: 02.12.2013
Сообщений: 3
03.12.2013, 23:25  [ТС]
Премного благодарен!!! И даже всё понял) Офигенно!)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.12.2013, 23:25
Помогаю со студенческими работами здесь

Найти номера двух элементов массива, наименее отличающихся друг от друга
Дан целочисленный массив из 30 элементов. Элементы массива могут принимать произвольные целые значения. Найти номера двух элементов...

Найти сумму всех чисел в строке отделенных друг от друга различными знаками препинания
Здравствуйте, дано такое задание : с клавиатуры вводится строка,которая содержит некоторое количество целых чисел,отделенных друг от друга...

Найти две наиболее удаленные друга от друга точки в заданном множестве точек
Координаты n точек на плоскости заданы в виде двумерного массива K. Найти номера двух точек, расстояние между которыми наибольшее....

Найти две наиболее удаленных друг от друга точки
Структуры: I. Решить задачу, используя структуру point для хранения координат точки: Множество точек задано в пространстве. Найти две...

В случайном множестве точек соединить прямой линией две наиболее удаленные друг от друга
Поисковая система показала мне одну программу, решающую нечто подобное. Я был удивлён. Судя по всему там был создан массив от массива...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru