Квадратный корень, вызывающий длинный десятичный знак, который не равен. например, 3.199999 не равен 3.2.
Я прошу пользователя ввести точки, чтобы увидеть, если форма треугольника. Если точки образуют треугольник ... программа определяет, какой треугольник создан. У меня проблема в том, что когда вводятся определенные точки;квадратный корень при нахождении длины стороны создает число, подобное 5.9999. Это вызывает проблемы при определении треугольника, потому что длина стороны покажет s1 = 5.9999 s2 = 5.9999 и s3 = 6. когда программа читает это, она скажет, что это равнобедренный треугольник, а скорее это должен быть эквилатерольный треугольник, но не из-за проблемы квадратного корня. Как я могу это исправить?
m = x1 - x2;
l = y1 - y2;
j = x2 - x3;
j2 = y2 - y3;
w = x3 - x1;
w2 = y3 - y1;
if( abs((x2-x1)*(y3-y1)-(y2-y1)*(x3-x1)) == 0)
{
printf("Not a triangle");
}
else
{
if(s1 == s2 && s2 == s3 && s1 == s3)
{
printf("\nThis forms an equilateral triangle");
}
else //if statement above is not true
{
if((s1 == s2 && s1 != s3) || (s1 == s3 && s2 != s1) || (s2 == s3 && s1 != s2))
{
printf("\nThis forms an isoceles triangle");
}
if(s1 != s2 && s2 != s3 && s1 != s3)
{
printf("\nThis forms a scalene trianle");
}
}
}
printf("\n\ns1: %g\ns2: %g\ns3: %g\n",s1, s2, s3);
}
Я хотел бы, чтобы вывод показывался, когда s1 = 5.49999 s2 = 5.5 s3 = 5.5, чтобы сказать, что создан равносторонний треугольник, а не изоцеле. спасибо за помощь