Условие задачи :
Треугольник задан длинами сторон. Найти радиус вписанной и описанной окружностей.
Тесты :
3 | 4 | 5 | 1 | 2.5 |
7.5 | 10 | 13 | 2.450117 | 6.5236096 |
1 | 3 | 4 | 0 | inf |
1 | 1 | 3 | Не существует! | Не существует! |
Код программы :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
import java.util.*; import java.lang.*; import java.io.*; class Ideone { public static void main (String[] args) { float a, b, c; Scanner scanner = new Scanner(System.in); System.out.println("Enter values: "); a = scanner.nextFloat(); b = scanner.nextFloat(); c = scanner.nextFloat(); if (a + b >= c || b + c >= a || a + c >= b) { float p = (a + b + c) / 2; float S = (float) Math.sqrt(p * (p - a) * (p - b) * (p - c)); float R = (a * b * c) / (4 * S); float r = S/p; System.out.println("Radius of incircle of triangle = " + r + "\nRadius of excircle of triangle = " + R); } else { System.out.println("Wrong input data. Triangle doesn't exist"); } } } |
Алгоритм :
В начале проверяем существует ли треугольник. В треугольнике сумма длин любых двух сторон больше длины третьей (или равна ее длине, если треугольник является вырожденным). Если нет, сообщаем об этом пользователю :
1 2 3 |
if (a + b < c || b + c < a || a + c < b) { System.out.println("Wrong input data. Triangle doesn't exist"); } |
Если треугольник существует, проводим следующие вычисления (порядок сохранен) :
- Вычисляем полупериметр треугольника: =
- Находим площадь по формуле Герона: =
- Вычисляем радиус вписанной окружности по формуле: =
- Вычисляем радиус описанной окружности по формуле: =
Работающая версия программы на Ideone.com :
Ideone.com