![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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). Найти точку, минимально удаленную от точки, последней помещенной на форму по нажатию левой кнопки мыши. Начало работы алгоритма по нажатию определенной клавиши на клавиатуре, результат выдать в окно диалога.
|
|
#7
|
|||
|
|||
|
Золотцо!
Во-первых. Надо создавать отдельные темы, а не лезть в чужую. Во-вторых. Что, опять напоминать теорему пифагора??? Тебе нужен массив. Когда жмакают кнопочку мышки, то надо запомнить коордитаты в этом массиве. Ну и далее простой цикл с расчетем по вышеупомянутой теореме. Нинимальное расстояние и индекс соотв. точки запоминаешь в отдельных переменных. Все. Далее подсказки только после того, как увижу твой код. |