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