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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.02.2012, 19:17   #1
Вероника_94
Пользователь
 
Регистрация: 19.01.2012
Сообщений: 22
По умолчанию задача с функциями (Pascal)

Составить программу, определяющую, могут ли три отрезка, заданные каждой координатами двух точек являться вершинами треугольника
Вероника_94 вне форума Ответить с цитированием
Старый 20.02.2012, 09:19   #2
denisbrain
Форумчанин
 
Регистрация: 29.05.2011
Сообщений: 449
По умолчанию

Цитата:
Сообщение от Вероника_94 Посмотреть сообщение
Составить программу, определяющую, могут ли три отрезка, заданные каждой координатами двух точек являться вершинами треугольника
Код:
Function GR(a,b:Tpoint):boolean;
begin
result:=false;
  if (a.x=b.x) and (a.y=b.Y) then result:=true;
end;

Function GetTrTrue:boolean;
var
   point:array [1..6] of Tpoint;
   x:integer;
   a,b,c:Tpoint;
   r:boolean;
begin
  point[1].X:=line[1].x1;
  point[1].y:=line[1].y1;
  point[2].X:=line[1].x2;
  point[2].y:=line[1].y2;
  point[3].X:=line[2].x1;
  point[3].y:=line[2].y1;
  point[4].X:=line[2].x2;
  point[4].y:=line[2].y2;
  point[5].X:=line[3].x1;
  point[5].y:=line[3].y1;
  point[6].X:=line[3].x2;
  point[6].y:=line[3].y2;
  a.X:=-1;a.y:=-1;
  b.X:=-1;b.y:=-1;
  c.X:=-1;c.y:=-1;
  result:=true;
  for X:=1 to 6 do begin

  if not (GR(point[x],a) or GR(point[x],b)  or GR(point[x],c)) then begin
    if a.x=-1 then  begin a.x:=point[x].X; if a.y=-1 then  a.y:=point[x].y; end
    else
    if b.x=-1 then  begin b.x:=point[x].X;  if b.y=-1 then  b.y:=point[x].y; end
    else if c.x=-1 then  begin c.x:=point[x].X;  if c.y=-1 then  c.y:=point[x].y; end;
    end;
    if not (GR(point[x],a) or GR(point[x],b)  or GR(point[x],c)) then
       result:=false;

  end;
end;
procedure CreateTreugol;
 var x,r1,cx,cy,a,i:integer;
begin
a:=random(100);
cx:=500;
cy:=200;
r1:=150;
   for x:=1 to 3 do begin
    line[x].x1:=round(cx+cos(a*pi/180)*r1);
    line[x].y1:=round(cy+sin(a*pi/180)*r1);
    line[x].x2:=round(cx+cos((a+120)*pi/180)*r1);
    line[x].y2:=round(cy+sin((a+120)*pi/180)*r1);
    a:=a+120;
   end;
end;
Procedure drawTr;
var i:integer;
begin
for i:=1 to 3 do begin
   form1.Canvas.MoveTo(line[i].x1,line[i].y1);
   form1.Canvas.LineTo(line[i].x2,line[i].y2);
   form1.Canvas.TextOut(line[i].x1+20,line[i].y1+20,inttostr(line[i].x1)+':'+inttostr(line[i].y1));
   form1.Canvas.TextOut(line[i].x2-30,line[i].y2-40,inttostr(line[i].x2)+':'+inttostr(line[i].y2));
end;



end;


procedure TForm1.Button1Click(Sender: TObject);
begin
   form1.Canvas.Rectangle(form1.Canvas.ClipRect);
   CreateTreugol;
   if random(2)=1 then line[1].x1:=line[1].y1;
   drawTr;
     if GetTrTrue then
     Showmessage('это треугольник')
     else Showmessage('это не треугольник');

end;
Вложения
Тип файла: zip треугольник.zip (210.6 Кб, 8 просмотров)
задания на pascal/delphi ICQ 368254335
Tel +79177425326 mail denis-naymov1985(at)mail.ru login skype denis.new.skype

Последний раз редактировалось denisbrain; 20.02.2012 в 09:44.
denisbrain вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача, Pascal Artijam Паскаль, Turbo Pascal, PascalABC.NET 1 13.12.2011 06:38
Работа с процедурами и функциями (Pascal) loxanet Помощь студентам 3 24.11.2011 21:55
Работа с функциями Pascal Harrr Помощь студентам 1 17.05.2010 22:26
Задача с модулем, процедурами и функциями w0lf16 Помощь студентам 1 05.12.2009 18:12
Задача с функциями Серафимий Долговяз Помощь студентам 2 31.01.2009 18:32