Задать вопрос
20 февраля, 14:16

Даны координаты четырех точек х1, у1, х2, у2, х3, у3, х4 и у4 найти наибольшую из площадей треугольников, вершины которых находятся в заданных точках (формула Герона, максимум из 2-ух чисел). Написать на Pascal ABC два варианта этой программы: 1 - через процедуру, 2 - через функцию.

+1
Ответы (1)
  1. 20 февраля, 16:03
    0
    Проверка существования треугольников не выполняется.

    1)

    var

    x1, y1, x2, y2, x3, y3, x4, y4:real;

    sq1, sq2, sq3, sq4, max:real;

    procedure s (a1, b1, a2, b2, a3, b3:real; var sq:real) ;

    var s1, s2, s3, p:real;

    begin

    s1:=sqrt ((a2-a1) * (a2-a1) + (b2-b1) * (b2-b1)) ;

    s2:=sqrt ((a3-a1) * (a3-a1) + (b3-b1) * (b3-b1)) ;

    s3:=sqrt ((a3-a2) * (a3-a2) + (b3-b2) * (b3-b2)) ;

    p: = (s1+s2+s3) / 2;

    sq:=sqrt (p * (p-s1) * (p-s2) * (p-s3)) ;

    end;

    begin

    write ('x1, y1: ') ; readln (x1, y1) ;

    write ('x2, y2: ') ; readln (x2, y2) ;

    write ('x3, y3: ') ; readln (x3, y3) ;

    write ('x4, y4: ') ; readln (x4, y4) ;

    s (x1, y1, x2, y2, x3, y3, sq1) ;

    s (x1, y1, x3, y3, x4, y4, sq2) ;

    s (x1, y1, x2, y2, x4, y4, sq3) ;

    s (x2, y2, x3, y3, x4, y4, sq4) ;

    writeln ('sq1 = ', sq1:5:2,' sq2 = ', sq2:5:2,' sq3 = ', sq3:5:2,' sq4 = ', sq4:5:2) ;

    if sq1>sq2 then max:=sq1 else max:=sq2;

    if sq3>max then max:=sq3;

    if sq4>max then max:=sq4;

    writeln ('max = ', max:5:2) ;

    end.

    2)

    var

    x1, y1, x2, y2, x3, y3, x4, y4:real;

    sq1, sq2, sq3, sq4, max:real;

    function s (a1, b1, a2, b2, a3, b3:real) : real;

    var s1, s2, s3, p:real;

    begin

    s1:=sqrt ((a2-a1) * (a2-a1) + (b2-b1) * (b2-b1)) ;

    s2:=sqrt ((a3-a1) * (a3-a1) + (b3-b1) * (b3-b1)) ;

    s3:=sqrt ((a3-a2) * (a3-a2) + (b3-b2) * (b3-b2)) ;

    p: = (s1+s2+s3) / 2;

    s:=sqrt (p * (p-s1) * (p-s2) * (p-s3)) ;

    end;

    begin

    write ('x1, y1: ') ; readln (x1, y1) ;

    write ('x2, y2: ') ; readln (x2, y2) ;

    write ('x3, y3: ') ; readln (x3, y3) ;

    write ('x4, y4: ') ;

    readln (x4, y4) ;

    sq1:=s (x1, y1, x2, y2, x3, y3) ;

    sq2:=s (x1, y1, x3, y3, x4, y4) ;

    sq3:=s (x1, y1, x2, y2, x4, y4) ;

    sq4:=s (x2, y2, x3, y3, x4, y4) ;

    writeln ('sq1 = ', sq1:5:2,' sq2 = ', sq2:5:2,' sq3 = ', sq3:5:2,' sq4 = ', sq4:5:2) ;

    if sq1>sq2 then max:=sq1 else max:=sq2;

    if sq3>max then max:=sq3;

    if sq4>max then max:=sq4;

    writeln ('max = ', max:5:2) ;

    end.

    Пример:

    x1, y1: - 5 1

    x2, y2: - 3 4

    x3, y3: - 1 2

    x4, y4: - 1 0

    sq1 = 5.00 sq2 = 4.00 sq3 = 7.00 sq4 = 2.00

    max = 7
Знаете ответ?
Сомневаетесь в ответе?
Найдите правильный ответ на вопрос ✅ «Даны координаты четырех точек х1, у1, х2, у2, х3, у3, х4 и у4 найти наибольшую из площадей треугольников, вершины которых находятся в ...» по предмету 📘 Информатика, а если вы сомневаетесь в правильности ответов или ответ отсутствует, то попробуйте воспользоваться умным поиском на сайте и найти ответы на похожие вопросы.
Смотреть другие ответы