Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Ksedorium
0 / 0 / 0
Регистрация: 02.12.2013
Сообщений: 3
1

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

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

Товарищи-господа, помогите, пожалуйста, абсолютному "чайнику"!
Есть задача: "Дано множество точек на плоскости. Найти две наиболее удаленные друг от друга точки",
нужен алгоритм её решения на псевдокоде.
Желательно, с разъяснением. Чем подробнее, тем лучше.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.12.2013, 23:22
Ответы с готовыми решениями:

Как заменить две буквы в слове друг на друга?
Комрады, помогите нубу, а то я все никак не могу придумать, как в одном слове...

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

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

Наложение аудиофайлов друг на друга
Доброго времени суток. Есть задача - наложить один аудиофайл (шум) на другой с...

В конструкторе элементы накладываются друг на друга
Добрый день! Начал осваивать visual c# и появился следующий вопрос. Пишу...

4
rattrapper
foo();
866 / 570 / 221
Регистрация: 03.07.2013
Сообщений: 1,547
Записей в блоге: 2
02.12.2013, 23:52 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
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
Ksedorium
0 / 0 / 0
Регистрация: 02.12.2013
Сообщений: 3
03.12.2013, 00:11  [ТС] 3
Благодарю, взглянул, и даже запустил, но это не совсем то...
Ваша программа выдаёт уже конечный ответ на заданные в самом коде координаты, а нужно такое консольное приложение, чтобы в него можно было ввести любые координаты любого количества точек, а оно выдавало бы координаты наиболее удалённых. А у меня то ли с недосыпа, то ли с перепоя, что-то совсем мозг отказывает...
Либо хотя бы псевдокод нужен - в нормальный уже сам переделаю.
0
rattrapper
foo();
866 / 570 / 221
Регистрация: 03.07.2013
Сообщений: 1,547
Записей в блоге: 2
03.12.2013, 22:54 4
Цитата Сообщение от 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
Ksedorium
0 / 0 / 0
Регистрация: 02.12.2013
Сообщений: 3
03.12.2013, 23:25  [ТС] 5
Премного благодарен!!! И даже всё понял) Офигенно!)
0
03.12.2013, 23:25
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.12.2013, 23:25

Могут ли проекты ссылаться друг на друга?
Имеется 2 проекта в решении. Что бы ссылаться на классы одного проекта из...

Классы в разных namespaces не видят друг друга.
Существует два класса в разных неймспейсах. Вот первый: namespace View { ...

Установить факт вхождения кубов друг в друга
Скорее всего это да же вопрос не по самому языку а по математике. Начал писать...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru