Задача «Периметр треугольника». Произвольный треугольник задан координатами его вершин [latex]A[/latex], [latex]B[/latex], [latex]C[/latex]. Вычислите длины его сторон [latex]|AB|[/latex], [latex]|BC|[/latex], [latex]|AC|[/latex], а также его периметр [latex]p[/latex].
Для нахождения длин сторон используется формула расстояния между точками:
[latex]|AB|=\sqrt{\left(x_{A}-x_{B}\right)^{2}+\left(y_{A}-y_{B}\right)^{2}}[/latex],
[latex]|BC|=\sqrt{\left(x_B-x_C\right)^2+\left(y_B-y_C\right)^2}[/latex],
[latex]|AC|=\sqrt{\left(x_A-x_C\right)^2+\left(y_A-y_C\right)^2}[/latex],
периметр – это сумма длин сторон:
[latex]p=|AB|+|BC|+|AC|[/latex]
[latex]A[/latex] | [latex]B[/latex] | [latex]C[/latex] | [latex]\left|AB\right|[/latex] | [latex]\left|BC\right|[/latex] | [latex]\left|AC\right|[/latex] | [latex]p[/latex] | Комментарий |
(0,0) | (0,3) | (4,0) | 3 | 5 | 4 | 12 | Пройден |
(0,0) | (0,1) | (1,0) | 1 | [latex]\sqrt{2}\approx 1.414[/latex] | 1 | [latex]2+\sqrt{2}\approx 3.414[/latex] | Пройден |
(0,0) | (0,1) | (0,2) | 1 | 1 | 2 | 4 | Пройден |
Заметим, что в третьем тесте треугольник является вырожденным – в программе нет отдельной проверки на вырожденность треугольника, для таких треугольников все характеристики рассчитываются верно.
Код программы:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
//Calculation of sides and perimeter of triangle #include <stdio.h> #include <math.h> int main(void){ double xA, yA, xB, yB, xC, yC, AB, BC, AC, p; 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); AB = sqrt((xA - xB) * (xA - xB) + (yA - yB) * (yA - yB)); BC = sqrt((xB - xC) * (xB - xC) + (yB - yC) * (yB - yC)); AC = sqrt((xA - xC) * (xA - xC) + (yA - yC) * (yA - yC)); p = AB + BC + AC; printf("AB=%8lg\n", AB); printf("BC=%8lg\n", BC); printf("AC=%8lg\n", AC); printf("p =%8lg\n", p); return 0; } |
Программа протестирована в среде ideone.com и Virtual C. Пройден тест «Test Coding Rules» среды Virtual C на стиль написания кода. Для всех числовых значений в программе используется вещественный тип данных двойной точности. Исходные данные – координаты точек [latex]A[/latex], [latex]B[/latex], [latex]C[/latex] – содержатся в переменных xA, yA, xB, yB, xC, xC, значения которых вводятся со стандартного потока ввода.
Проверить работу программы можно здесь.
Рекомендую использовать как пример хорошего отчёта.