Добрые люди, помогите пожалуйста с решением..(Паскаль АВС (процедуры) Составить и...

0 голосов
38 просмотров

Добрые люди, помогите пожалуйста с решением..(Паскаль АВС (процедуры)
Составить и отладить программу для вычисления площади произвольного четырехугольника по заданным координатам его вершин, определив функции для вычисления длин сторон и нахождения площади треугольников.
(Паскаль АВС)
Препод задал, но ничего не объяснил... Завтра уже сдавать лаб.работу. Решается вопрос автомата в зимней сессии.


Информатика (15 баллов) | 38 просмотров
0

У Вас Pascal ABC или PascalABC.Net ? Первый из них с 2007 года не поддерживается разработчиком.

0

PascalABC.Net - у меня

0

Поможет кто??(((

Дан 1 ответ
0 голосов
Правильный ответ

// PascalABC.Net 3.0, сборка 1066
type
  Point=record
  x,y:double;
  end;

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

function L(A,B:Point):double;
begin
  Result:=sqrt(sqr(B.x-A.x)+sqr(B.y-A.y))
end;

function S(A,B,C:Point):double;
var
  p,la,lb,lc:double;
begin
  la:=L(A,B); lb:=L(B,C); lc:=L(C,A);
  if (la+lb>lc) and (la+lc>lb) and (lb+lc>la) then begin
    p:=0.5*(la+lb+lc);
    Result:=sqrt(p*(p-la)*(p-lb)*(p-lc))
    end
  else
    Result:=0
end;

var
  A,B,C,D:Point;
  S1,S2:double;

begin
  GetPoint('A',A);
  GetPoint('B',B);
  GetPoint('C',C);
  GetPoint('D',D);
  S1:=S(A,B,C);
  if S1=0 then Write('По точкам А,В,С нельзя построить треугольник')
  else begin
    S2:=S(C,D,A);
    if S2=0 then Write('По точкам C,D,A нельзя построить треугольник')
    else Writeln('Площадь четырехугольника равна ',S1+S2)
  end
end.

Тестовое решение:
введите координаты точки A: -5 -7
введите координаты точки B: -2 4
введите координаты точки C: 5 9
введите координаты точки D: 9 -3
Площадь четырехугольника равна 123

(142k баллов)
0

Спасибо!!!!

0

Пожалуйста