У меня есть две функции, показанные здесь:
https://pastebin.com/QWQ6yH6u
// main() calls both findDistance() and test() correctly so they don't need to be shown.
// Note: This is only a section of the full code as it is the only relevant part.
double findDistance(float x1, float y1, float x2, float y2) {
double distanceTotal = sqrt( pow( 2, (x2-x1) ) + pow( 2, (y2-y1) )); // This line doesn't work with assert values.
//double distanceTotal = (x2-x1) + (y2-y1); // This line works with assert values.
return distanceTotal;
}
void test() {
assert(findDistance(4, 3, 5, 1) - 2.23607 <= epsilon);
assert(findDistance(2, 4, 2, 4) <= 1.00);
assert(findDistance(4, 4, 4, 4) <= 1.00);
cout << "all tests passed..." << endl;
}
Функция findDistance находит расстояние между двумя точками (x1, y1), (x2, y2). Одна строка корректно работает со значениями assert (), а строка с квадратными корнями и степенями - нет. Что не так со строкой 5?
Код успешно компилируется с использованием http://cpp.sh, а результат с текущим кодом:
Do you want to run the program? (y/n) y
Program calculates distance between 2 points on a 2D coordinates.
Enter a point in the form (x, y): (3,3)
(x1, y1) = (3.00, 3.00)
Enter a second point in the form (x, y): (1,1)
(x2, y2) = (1.00, 1.00)
Я уже проверил следующие сообщения:
1. Как рассчитать мощность в C
2. Линия квадратного корня не работает
3. Ошибка функции квадратного корня C ++