Оператор 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;

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 3.5 из 5
Похожие ответы