![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
||||
|
||||
![]() Приведена программа, обладающая следующей функциональностью.
Имеется меню, содержащее пункты – Выход и О программе, нажатие на клавишу мыши выдает сообщение – «правая/левая(x,y)» (где (x,y) - координаты кликов мыши). - это я сделал. А как теперь получить такое? ![]() На форму поместить N точек (каждая точка помещается на форму по нажатию левой кнопки мыши и имеет номер 1..N). Вычислить расстояния между всеми парами точек. Начало работы алгоритма - по нажатию правой кнопки мыши, результат подписать функцией TextOut в серединах отрезка, соединяющих пары точек. Вот исходник первоначальной программы. Кто может помогите,пожалуйста. Последний раз редактировалось Biatov, 04.03.2010 в 22:26. |
#2
|
|||
|
|||
![]() Чтобы не нервировать антивирусы, уберите из архива exe'шник.
|
#3
|
|||
|
|||
![]() Теорему пифагора знаем?
Начерти на бумажке 2 точки в произвольных местах и соедини их отрезком. Сделай проекции этого отрезка на оси. А теперь напиши формулу расчета длинны отрезка по координатам точек. Ну и сама подпись тоже делается легко - надо расчитать координаты середины отрезка и туда вывести соотв. длинну. Код:
uses Math; function GetLen(C1, C2 : Integer) : Integer; begin Result := Max(C1,C2) - Min(C1,C2); end; var I, J : Integer; L : Double; Points = Array Of TPoint; begin For I := Low(Points) To High(Points) Do For J := I + 1 To High(Points) Do Begin If I = J Then Continue; // Calc len L = Sqrt(sqr(GetLen(Points[i].X,Points[J].X)) + sqr(GetLen(Points[i].Y,Points[J].Y))); // draw. Self = TForm Self.Canvas.MoveTo(Points[i].X,Points[i].Y); Self.Canvas.LineTo(Points[J].X,Points[J].Y); // Лень высчитывать координаты серидины. Self.Canvas.TextOut(Points[i].X,Points[i].Y,FloatToStr(L)); End; end; |
#4
|
|||
|
|||
![]() Решение с комментариями во вложении.
|
#5
|
||||
|
||||
![]() Спасибо всем! Справился и лабу сдал!
|
#6
|
|||
|
|||
![]() На форму поместить N точек (каждая точка помещается на форму по нажатию правой кнопки мыши и имеет номер 1..N). Найти точку, минимально удаленную от точки, последней помещенной на форму по нажатию левой кнопки мыши. Начало работы алгоритма по нажатию определенной клавиши на клавиатуре, результат выдать в окно диалога.
|