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

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