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

Найти точку, наибольшее из расстояний от которой до выбранных точек было бы минимальным (Pascal -> Си)

26.06.2018, 19:15. Просмотров 264. Ответов 0
Метки нет (Все метки)

Можно хотя бы для решения задачи перевести главное
Delphi
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
{
    На плоскости расположены N-точек, заданные своими координатами,
    найти на оси абсцисс точку наибольшее из расстояний от которой
    до выбранных точек было бы минимальным.
    (В задаче не применять оператор GOTO)!
}
Uses
    Crt;
Const
    MaxRandom = 10;
    PixCount = 5;
    epsilon = 10e-6;
Type
    TPixel = Record
        X, Y: Integer;
    end;
Var
    Pixels: Array[1..PixCount] of TPixel;
    MinX, MaxX, MaxY: Integer;
    a, b, c, L, dL, dR: Real;
    i: Byte;
 
begin
    ClrScr;
    Randomize;
    {Init pixels}
    MinX := MaxRandom;
    MaxX := -MaxRandom;
    for i := 1 to PixCount do begin
        Pixels[i].X := Random(MaxRandom);
        Pixels[i].Y := Random(MaxRandom);
        WriteLn('Pixels[', i:2, '] = (', Pixels[i].X, ', ', Pixels[i].Y, ')');
        if MinX > Pixels[i].X then
            MinX := Pixels[i].X;
        if MaxX < Pixels[i].X then
            MaxX := Pixels[i].X;
    end;
 
    {Solving}
    {Очевидно, что искомая точка будет лежать в пределах проекции [MinX, MaxX]}
    a := MinX; {Левая граница отрезка}
    b := MaxX; {Правая граница отрезка}
    while ((b-a) > epsilon) do begin {Пока длина отрезка будет больше необходимой точности}
        c := (a + b)/2; {Вычислим середину отрезка}
        dL := 0; {Сбрасываем расстояния}
        dR := 0;
        for i := 1 to PixCount do begin {для всех точек}
            if (Pixels[i].X <= c) then begin {которые лежат левее середины}
                L := sqrt(sqr(c-Pixels[i].X) + sqr(Pixels[i].Y)); {вычисляем расстояние до точки}
                if (dL < L) then {запоминаем максимальное расстояние слева}
                    dL := L;
            end;
            if (Pixels[i].X >= c) then begin {которые лежат правее середины}
                L := sqrt(sqr(Pixels[i].X-c) + sqr(Pixels[i].Y)); {вычисляем расстояние до точки}
                if (dR < L) then {запоминаем максимальное расстояние справа}
                    dR := L;
            end;
        end;
        if (dL > dR) then begin {если слева расстояние больше}
            b := c; {смещаем правую границу}
        end;
        if (dR > dL) then begin {если больше справа}
            a := c; {смещаем левую границу}
        end;
        if (dR = dL) then {в случае равности}
            a := c; {искомая точка найдена}
            break;          
    end;
    Writeln;
    Write( 'Found O(', a:0:5, ', ', 0, ')'); {Вывод результатов}
    readkey;
end.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.06.2018, 19:15
Ответы с готовыми решениями:

На оси абцисс найти такую точку, сумма расстояний, которой до точек А и В-наименьшая для всех точек
Даны действительные числа х1,у1,х2,у2(х1 не равен х2),которые определяют 2...

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

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

Найти точку на плоскости, сумма расстояний от которой до остальных точек множества максимальна
Друзья, мне вновь необходима любая ваша помощь по теме) Задача такова: решить...

На оси абсцисс найти такую точку, сумма расстояний от которой до точек А и В наименьшая для всех точек этой оси
Даны действительные числа х1,у1,х2,у2,(х1х2), которые определяют две точки...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.06.2018, 19:15

На оси абсцисс найти такую точку, сумма расстояний от которой до точек А и В наименьшая для всех точек этой оси
Даны действительные числа х1,у1,х2,у2,(х1 не равен х2), которые определяют две...

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

Найти такую точку заданного на плоскости множества точек, сумма расстояний от которой до остальных минимальна
осталась последняя задача по Си, от неё зависит зачёт. Условия такие: найти...


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

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

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