Оператор 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;
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д