Squareroot вызывает длинное десятичное число, которое не равно. например 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, чтобы сказать, что был создан равносторонний треугольник, а не равнобедренный. Спасибо за помощь
math.floor()
результата. - person John Gordon   schedule 15.10.2019