Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.05.2016, 14:42   #1
K775M14
 
Регистрация: 11.04.2016
Сообщений: 3
По умолчанию Как вычислить самую отдаленную точку?

Делаю задание, где нужно показать некотрое кол-во точек, задаваемое пользователем. А также найти самую отдаленную точку. Построение и нахождение расстояния от точек да начала координат сделал, а вот нахождение максимально удаленный - увы, нет. Может, кто знает, как это делать? Delphi
Код:
 


unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;

type
  TForm1 = class(TForm)
    procedure FormPaint(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  x,y,i,n:Integer;
  r:Extended;
  Form1: TForm1;

implementation


{$R *.dfm}

procedure TForm1.FormPaint(Sender: TObject);
begin
Randomize;
n:=StrToInt(InputBox('','Введите кол-во точек,''));
for i:=1 to n do
begin
 x:=Random(form1.width);
 y:=Random(form1.height);
 form1.canvas.Pixels[x,y]:=clBlack;
 for i:=0 to n do
  r:=sqrt(x1*x1 + y1*y1);
  ShowMessage(FloatToStr(r));
 end;
end;

end.
K775M14 вне форума Ответить с цитированием
Старый 13.05.2016, 14:48   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,527
По умолчанию

Цитата:
А также найти самую отдаленную точку.
от чего отдаленную ?


расстояние между ДВУМЯ точками (x1,y1) и (x2, y2)
Код:
R:=sqrt((x2-x1)*(x2-x1) + (y2-y1)*(y2-y1));
для сравнений можно использовать и квадрат расстояний.
Код:
r2:=(x2-x1)*(x2-x1) + (y2-y1)*(y2-y1);
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 13.05.2016 в 14:52.
evg_m вне форума Ответить с цитированием
Старый 13.05.2016, 16:49   #3
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Как звучит оригинал задания?
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 13.05.2016, 17:20   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

K775M14, самую удалённую от начала координат?
Это от левого верхнего угла формы, если судить по вашему коду?

Так очень просто. Как в любой задаче поиска максимума.
Берём за начальное значение удаление первой точки (или отрицательное число, ведь очевидно, что любое расстояние будет больше него).
далее, для каждой точки проверяем удаление, если оно больше максимального, то запоминаем его.
Ну, при этом ещё надо запомнить координаты этой самой максимальной точки и, если надо, её номер.
Вот и всё.

смотрите:
Код:
var r,maxR : real;
  xMax, yMax : integer;
begin
Randomize;
maxR := -1;
n:=StrToInt(InputBox('','Введите кол-во точек,''));
for i:=1 to n do
begin
 x:=Random(form1.width);
 y:=Random(form1.height);
 form1.canvas.Pixels[x,y]:=clBlack;
 r:=sqr(x) + sqr(y);
 if (r>maxR) then begin
   maxR := r; xMax := x; yMax:=y
 end;
end;
// самую дальнюю точку прорисуем красным
 form1.canvas.Pixels[xMax,yMax]:=clRed;
 ShowMessage('самая удаленная точка x='+IntToStr(xMax)+' y='+IntToStr(yMax));
end;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 13.05.2016, 18:44   #5
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Чото навроде этого, штоли?

Вложения
Тип файла: 7z pf_293391.7z (938.0 Кб, 8 просмотров)
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...

Последний раз редактировалось min@y™; 13.05.2016 в 20:26.
min@y™ вне форума Ответить с цитированием
Старый 13.05.2016, 19:04   #6
K775M14
 
Регистрация: 11.04.2016
Сообщений: 3
Счастье

Спасибо, бро, разобрался
Правда, код немного изменил под себя Но все равно, спс
K775M14 вне форума Ответить с цитированием
Старый 13.05.2016, 19:08   #7
K775M14
 
Регистрация: 11.04.2016
Сообщений: 3
По умолчанию

На плоскости своими координатами заданы N-точек. Найдите координаты самой удаленной (от начала координат) точки. Нарисовать все эти точки на канве формы.
K775M14 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Среди N точек, заданных своими координатами на плоскости, определить самую дальнюю точку от начала координат. zaira001002 Общие вопросы C/C++ 10 30.09.2013 10:26
Определить самую длинную и самую короткую строку файла Jadson Помощь студентам 6 20.07.2012 00:30
Нужен программист на отдаленную работу Iamyurii Фриланс 0 25.08.2011 11:23
Работа с файлами .Найти самую длинную и самую короткую строки. britannia C# (си шарп) 1 03.06.2011 13:45
tchart - Как при наведении курсора на определенную точку сериэса узнать точку наведения и отобразить её xaero93 Помощь студентам 0 22.04.2009 19:28