У меня есть проблема с моим кодом C ++, где я делаю два шага в одном в отношении пифагора.
Я получаю длину a и b одновременно с выполнением функции Пифагора, но моя переменная всегда равна 0, даже если точки X и Y отображаются с соответствующими значениями.
К сожалению, из-за этого, когда квадратный корень перезапускается, он вызывает ошибку, поскольку вы не можете получить квадратный корень 0.
Это выглядит довольно сложно, но это было самое лучшее, что я мог получить
hypPrevious = (
( *(previousCalcp->getX()) - *(currentCalcp->getX()) )
*
( *(previousCalcp->getX()) - *(currentCalcp->getX()) )
)
+
(
( *(currentCalcp->getY()) - *(previousCalcp->getY()) )
*
( *(currentCalcp->getY()) - *(previousCalcp->getY()) )
);
С информацией, которую вы нам дали, лучший совет, который я могу вам дать, — переписать ваш код и добавить строку отладки, чтобы проверить, что идет не так:
int x1 = *(previousCalcp->getX());
int y1 = *(previousCalcp->getY())
int x2 = *(currentCalcp->getX());
int y2 = *(currentCalcp->getY());
int dx = x1 - x2;
int dy = y1 - y2;
hypPrevious = dx*dx + dy*dy;
std::cout << "(" << x1 << "," << y1 << ") and (" << x2 << "," << y2 << ") resulted in " << hypPrevious << std::endl;
Не забудьте поменять тип int
к тому, что вы используете в своем коде.