Оператор if не правильно сравнивает числа - C (СИ)
Формулировка задачи:
Доброго времени века!
Написал значит кодец, в конце идет сравнивание значений двух переменных, их значения равны, а оператору if пофигу!!! Не хочет нормально работать, зараза.
Весь кодец:
Часть кодца, где сравниваю значения переменных:
Скрин, на котором видно что значения сравниваемых переменных равны (прикрепил).
Вопрос: в чем проблема?
Заранее спасибо!
#include <stdio.h>
#include <math.h>
int main(void)
{
double AB, BD, DA; // довжини сторін трикутника #1
double DB, BC, CD; // довжини сторін трикутника #2
double AD, DC, CA; // довжини сторін трикутника #3
double x1, y1; // координати вершини A
double x2, y2; // координати вершини B
double x3, y3; // координати вершини C
double x, y; // координати довільної точки
double pABD, pBCD, pCAD; // напівпериметри трикутників
double sABD, sBCD, sCAD; // площі трикутників з точкою "D"
double pABC; // напівпериметр основного трикутника
double sABC; // площа основного трикутника
x1 = -2;
y1 = -1;
x2 = -1.5;
y2 = 0;
x3 = 1;
y3 = 0;
printf("Input x-coordinate of point: ");
scanf("%lf", &x);
printf("Input y-coordinate of point: ");
scanf("%lf", &y);
AD = sqrt( pow((x1-x ),2) + pow((y1-y ),2)); // довжина сторони AD
BD = sqrt( pow((x2-x ),2) + pow((y2-y ),2)); // довжина сторони BD
CD = sqrt( pow((x3-x ),2) + pow((y3-y ),2)); // довжина сторони CD
AB = sqrt( pow((x2-x1),2) + pow((y2-y1),2)); // довжина сторони AB
BC = sqrt( pow((x3-x2),2) + pow((y3-y2),2)); // довжина сторони BC
CA = sqrt( pow((x1-x3),2) + pow((y1-y3),2)); // довжина сторони CA
pABD = ( AB + BD + AD ) / 2; // напівпериметр трикутника ABD
pBCD = ( BD + BC + CD ) / 2; // напівпериметр трикутника BCD
pCAD = ( AD + CD + CA ) / 2; // напівпериметр трикутника CAD
pABC = ( AB + BC + CA ) / 2; // напівпериметр трикутника ABC
sABD = sqrt( pABD * (pABD - AB) * (pABD - BD) * (pABD - AD) );// площа ABD
sBCD = sqrt( pBCD * (pBCD - BD) * (pBCD - BC) * (pBCD - CD) );// площа BCD
sCAD = sqrt( pCAD * (pCAD - AD) * (pCAD - CD) * (pCAD - CA) );// площа CAD
sABC = sqrt( pABC * (pABC - AB) * (pABC - BC) * (pABC - CA) );// площа ABC
printf("%lf\n", sABD + sBCD + sCAD);
printf("%lf\n", sABC);
if ( (sABD + sBCD + sCAD) == sABC )
{
printf("Point belongs to the plane!\n");
} else
{
printf("Point doesn't belongs to the plane!\n");
}
system ("pause");
}if ( (sABD + sBCD + sCAD) == sABC )
{
printf("Point belongs to the plane!\n");
} else
{
printf("Point doesn't belongs to the plane!\n");
}Решение задачи: «Оператор if не правильно сравнивает числа»
textual
Листинг программы
x=(floor(x*1000))/1000;