profile
Опубликовано 6 лет назад по предмету Информатика от romzes46rus98

Паскаль. Два треугольника заданы координатами вершин. Определить, подобны ли эти треугольники.

  1. Ответ
    Ответ дан Аккаунт удален
    // PascalABC.NET 3.0, сборка 1076
    type
      Point=record
      x,y:real
      end;
      Line=record
      A,B:Point
      end;
      Triangle=record
      A,B,C:Point;
      sa,sb,sc:real; { длины сторон }
      end;

    procedure GetPoint(PointName:char; var M:Point);
    begin
      Write('Введите координаты точки ',PointName,'(x,y): ');
      Read(M.x,M.y)
    end;

    function LineLength(A,B:Point):real;
    begin
      LineLength:=sqrt(sqr(B.x-A.x)+sqr(B.y-A.y))
    end;
     
    procedure CreateTriangle(var T:Triangle; var l:boolean);
    begin
      With T do begin
        GetPoint('A',A);
        GetPoint('B',B);
        GetPoint('C',C);
        sa:=LineLength(B,C);
        sb:=LineLength(A,C);
        sc:=LineLength(A,B);
        l:=(sa+sb>sc) and (sa+sc>sb) and (sb+sc>sa)
      end
    end;

    function TriangleIsLikes(T1,T2:Triangle):boolean;
    var
      k1,k2,k3:real;
    begin
      k1:=T1.sa/T2.sa; k2:=T1.sb/T2.sb;
      if k1=k2 then begin
        k3:=T1.sc/T2.sc;
        TriangleIsLikes:=k1=k3
        end
      else
        TriangleIsLikes:=False
    end;

    var
      T1,T2:Triangle;
      legal:boolean;
    begin
      Writeln('*** Первый треугольник ***');
      CreateTriangle(T1,legal);
      if legal then begin
        Writeln('*** Второй треугольник ***');
        CreateTriangle(T2,legal);
        if legal then
          if TriangleIsLikes(T1,T2) then Writeln('Треугольники подобны')
          else Writeln('Треугольники не подобны')
        else Writeln('Треугольник невозможно построить')
        end
      else Writeln('Треугольник невозможно построить')
    end.

Самые новые вопросы