Задача.
Треугольник задается координатами своих вершин на плоскости: [latex]A(x1,y1)[/latex], [latex]B(x2,y2)[/latex], [latex]C(x3,y3)[/latex]. Найти площадь треугольника ABC.
Тесты.
A | B | C | Площадь | Комментарий |
[latex](0;0)[/latex] | [latex](0;4)[/latex] | [latex](5;0)[/latex] | 10 | Пройден |
[latex](-1.5;2)[/latex] | [latex](2.5;-2)[/latex] | [latex](4;4.25)[/latex] | 15.5 | Пройден |
[latex](0;1)[/latex] | [latex](0;3)[/latex] | [latex](0;4)[/latex] | 0 | Пройден |
В третьем примере имеем вырожденный треугольник, для которого площадь будет равна нулю.
Код.
С++
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
#include <stdio.h> #include <math.h> int main(void) { double xA, yA, xB, yB, xC, yC, S; // описание переменных printf("Coordinates of point A:\n"); //ввод координат вершин треугольника scanf("%lf %lf", &xA, &yA); printf("Coordinates of point B:\n"); scanf("%lf %lf", &xB, &yB); printf("Coordinates of point C:\n"); scanf("%lf %lf", &xC, &yC); S=fabs((xB-xA)*(yC-yA)-(xC-xA)*(yB-yA))/2.0; //вычисление площади printf("Square=%8lg",S); return 0; } |
Java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
import java.util.*; import java.lang.*; import java.io.*; class Ideone { public static void main (String[] args) { double xA, yA, xB, yB, xC, yC, S; // описание переменных Scanner sc = new Scanner(System.in); System.out.println("Coordinates of point A:\n"); //ввод координат вершин треугольника xA = sc.nextDouble(); yA = sc.nextDouble(); System.out.println("Coordinates of point B:\n"); xB = sc.nextDouble(); yB = sc.nextDouble(); System.out.println("Coordinates of point C:\n"); xC = sc.nextDouble(); yC = sc.nextDouble(); S=Math.abs((xB-xA)*(yC-yA)-(xC-xA)*(yB-yA))/2.0; //вычисление площади System.out.printf("Square=%f",S); } } |
Решение.
Для вычисления площади воспользуемся формулой:
[latex]S_{ABC}=\frac{\left|(x_{B}-x_{A})(y_{C}-y_{A})-(x_{C}-x_{A}) (y_{B}-y_{A})\right|}{2}[/latex]Для выполнения программы и проверки тестов можно воспользоваться данной ссылкой (C++) или другой (Java).