Это код для определения радиуса вкрапления сферы, вписанной в неправильный тетраэдр. Пожалуйста, помогите с поиском ошибки ...
Я имею в виду, как удалить эту часть inf, и выполнитескажите, есть ли какая-либо ошибка в части реализации формул.Поскольку я получаю неправильный ответ для второго случая ....
#include <stdio.h>
#include <math.h>
double cosine (int a, int b, int c)
{
double temp = ( a*a + b*b - c*c ) / (2.0 * a * b);
return (temp);
}
double area (int a, int b, int c)
{
double s = (a + b + c )/2 ;
double ar = sqrt(s*(s-a)*(s-b)*(s-c));
return(ar);
}
int main()
{
long int t = 0, T = 0;
scanf("%ld", &T);
while(t++ < T)
{
int AB, BC, AC, AD, BD, CD;
double cos1, cos2, cos3,ar1,ar2,ar3,ar4;
scanf("%d%d%d%d%d%d", &AB, &AC, &AD, &BC, &BD, &CD);
cos1 = cosine(AD, BD, AB);
cos2 = cosine(BD, CD, BC);
cos3 = cosine(CD, AD, AC);
ar1 = area(AD, BD, AB);
ar2 = area(BD, CD, BC);
ar3 = area(CD, AD, AC);
ar4 = area(AB, BC, AC);
double temp = sqrt( 1 + 2 * cos1 * cos2 * cos3 - cos1*cos1 - cos2*cos2 -
cos3*cos3);
double vol = AD * BD * CD * temp / 6;
double answer = 3*vol/(ar1+ar2+ar3+ar4);
printf("%0.4lf\n", answer);
}
return 0;
}
Ввод
2
1 1 1 1 1 1
1000 1000 1000 5 5 6
Ввод
inf
1.6474