Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Delphi, Kylix and Pascal


Ответ
 
Опции темы Опции просмотра
Старый 23.11.2013, 14:02   #1 (permalink)
Warko
Новичок
 
Регистрация: 19.11.2013
Сообщений: 5
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Программа в Делфи

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


Помогите кто может)
Warko вне форума   Ответить с цитированием

Старый 23.11.2013, 14:02
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Скорее всего по этим ссылкам содержится много полезной для вас информации

Задачка в Делфи
Задание на С, С++ или Делфи

Старый 23.11.2013, 14:04   #2 (permalink)
Gruvi
VIP user
 
Аватар для Gruvi
 
Регистрация: 10.03.2011
Сообщений: 765
Записей в дневнике: 1
Сказал(а) спасибо: 10
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 3453
По умолчанию

Вот как-то так по идеи выглядит програма:
Цитата:
unit Unit1;

interface

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

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
myt=record a,b:integer end;
var
Form1: TForm1;

implementation

{$R *.dfm}
procedure myDrawRect(x1,y1,x2,y2,x3,y3,x4,y4:integer);
begin
form1.Canvas.MoveTo(x1,y1);
form1.Canvas.lineto(x2,y2);
form1.Canvas.lineto(x3,y3);
form1.Canvas.lineto(x4,y4);
form1.Canvas.lineto(x1,y1);
end;
Function GetNt(n:integeR):myT;
begin
result.a:=1;result.b:=1;
if n=0 then begin result.a:=1;result.b:=1; end;
if n=1 then begin result.a:=1;result.b:=-1; end;
if n=2 then begin result.a:=-1;result.b:=1; end;
if n=3 then begin result.a:=-1;result.b:=-1; end;
end;
// R2
// b(x2,y2)========== C( X3,y3)
//--------*-\------*
//--------*--\-----*
//--------*---\----*
//--R1----*---\----*
//--------*----\---*
//--------*-----\--*
//--------*------\-*
// a(x1,y1)*======== * D(x4,y4) - искомая точка
//
//

procedure TForm1.Button1Click(Sender: TObject);
var r5,x1,y1,x2,y2,x3,y3,x4,y4:integer;
l,n,r4,r3,r1,r2:integer;
begin
x1:=200;y1:=200;
x2:=200;y2:=50;
x3:=50;y3:=50;
r1:=Round(SQRt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)));
r2:=Round(SQRt((x3-x2)*(x3-x2)+(y3-y2)*(y3-y2)));
r3:=Round(SQrt(r2*r2+r1*r1));
if (x1-x2)>0 then
l:=Round(arctan((y1-y2)/(x1-x2))*180/pi) else l:=90;
// находим угол наклона сторны A
for n:=0 to 4 do begin
x4:=x2+Round(cos((45+l)*pi/180)*r3)*GetNt(n).a;
y4:=y2+Round(sin((45+l)*pi/180)*r3)*GetNt(n).b;
r4:=Round(SQRt((x3-x4)*(x3-x4)+(y3-y4)*(y3-y4)));
r5:=Round(SQRt((x4-x1)*(x4-x1)+(y4-y1)*(y4-y1)));
if (r4=r1) and (r5=r2) then begin
Showmessage(inttostr(x4)+' '+inttostr(y4));
break;
end;
end;
myDrawRect(x1,y1,x2,y2,x3,y3,x4,y4);


end;

end.
Gruvi вне форума   Ответить с цитированием
Старый 23.11.2013, 14:19   #3 (permalink)
Warko
Новичок
 
Регистрация: 19.11.2013
Сообщений: 5
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

спасибо огромное, все работает ))
Warko вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 16:13.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.