![]() |
1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!
![]() ![]() |
![]() |
first_day |
![]()
Сообщение
#1
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 86 Пол: Мужской Реальное имя: Илья Репутация: ![]() ![]() ![]() |
Как корректно провести сравнение двух вещественных чисел? Вот например всегда ли здесь будет производиться корректное сравнение?
min_d=-1;
for(pl=x[i];pl<=x[i+1];pl+=0.01)
{
d1=dist(x[i],pl,y[i],0);
d2=dist(x[i+1],pl,y[i+1],0);
if (min_d==-1 || d1+d2<min_d)
{
min_d=d1+d2;
min_pl=pl;
}
}
// dist - функция, возвращающая значение double, все переменные (кроме i - int) и массивы так же типа double
Или может как-то погрешность в вычислениях нужно учитывать? Сообщение отредактировано: first_day - 28.04.2008 21:06 -------------------- Я бы изменил мир, да Бог не дает исходников.
|
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Вообще нежелательно применять операции "==" и "!=" к вещественным типам. Лучше
if (min_d < 0 || d1+d2 < min_d)
(поскольку расстояние, насколько я понимаю, быть отрицательным не может)А вот операции "меньше" и "больше" должны работать корректно... |
first_day |
![]()
Сообщение
#3
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 86 Пол: Мужской Реальное имя: Илья Репутация: ![]() ![]() ![]() |
Тогда я ничего не пойму. Мне нужно найти минимальное расстояние ((AC+BC) или же например (AK+BK)), начиная от точки x1, заканчивая точкой x2. При этом точность вычислений 0.01.
Я делаю перебор каждой возможной точки x с шагом 0.01, считаю эти расстояния, храню минимум. Сдаю задачу - валится на 5 тесте... Единственное, что я думаю - так это погрешности при вычислениях, но как их учесть?.. Сообщение отредактировано: first_day - 28.04.2008 21:27 Эскизы прикрепленных изображений ![]() -------------------- Я бы изменил мир, да Бог не дает исходников.
|
andriano |
![]()
Сообщение
#4
|
Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 168 Пол: Мужской Реальное имя: Сергей Андрианов Репутация: ![]() ![]() ![]() |
1. Не обнаружил, где у тебя инициализируется переменная i.
2. Честно говоря, не совсем ясна задача, а то, что приходит в голову, не состыкуется с текстом программы. |
first_day |
![]()
Сообщение
#5
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 86 Пол: Мужской Реальное имя: Илья Репутация: ![]() ![]() ![]() |
1. Не обнаружил, где у тебя инициализируется переменная i. 2. Честно говоря, не совсем ясна задача, а то, что приходит в голову, не состыкуется с текстом программы. Это была всего лишь часть программы... У этой задачи оказывается чисто математическое решение... -------------------- Я бы изменил мир, да Бог не дает исходников.
|
![]() ![]() |
![]() |
Текстовая версия | 19.07.2025 4:24 |