| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: Общие вопросы > встреча стрелок на часах |
| Автор: argamidon 2.12.2011, 12:08 | ||
| заранее извиняюсь если ошибся темой или резделом. даны целые числа h(0;12] и m[0;59], указывающие на момент времени. Помогите определить наименьшее время (число полных минут), которое пройдёт до момента встречи(совпадения) стрелок в одной точке. когда я пытался решить эту задачу, я шёл примерно по такому пути: определял точные угловые координаты часовой и минутной стрелки, и далее запускал цикл до тех пор пока угловое значение не будет равным. тоесть я прибавлял за каждую итерацию угловой расстояние к часовой стрелке по пол градуса(именно столько часовая проходит за одну минуту) и по 6 градусов к минутной стелке(именно столько она проходит за минуту). Кое-что конечно у меня получислоь и я хотел бы знать, если способ прощу и правильнее моего . Заранее извиняюсь за нечитаемость листинга(я только учусь). И получилось примерное такое:
|
| Автор: AlexKozlov 2.12.2011, 13:07 |
| может вспомнить математику, составить и решить уравненьице? Или задача стоит сделать именно через ж? да и кстати, числа с плавающей запятой лучше сравнить примерно так |a-b|<точность. Где точность - некое отличное от нуля, но достаточно малое для ваших целей число иначе вы можете промахнуться, в вашем случае на минуту. |
| Автор: argamidon 2.12.2011, 13:20 |
| спасибо за советы. вот я и создал тему для того чтобы знать что за уравнеице надо составить. самому в башку ничего не приходит. |
| Автор: Mirkes 3.12.2011, 19:43 | ||
| Вообще-то задача решается достаточно просто Сначала переведем часы и минуты в углы и посчитаем, насколько минутная стрелка отстает от часовой (именно отстает, если угол часовой стрелки составляет 297 градусов, а угол минутной - 324 градусов, то отставание составляет 360+297-324=333 градусов) Далее угол часовой стрелки увеличивается на 0.5 градуса, а минутной на 6 градусов. Итого расстояние между ними сокращается на 5.5 градуса в минуту. Следовательно минимальное число минут, через которое минутная стрелка догонит часовую составляет отставание минутной стрелки деленное на 5.5. Число полных минут - целая часть от этого числа. Использовать лучше не плавающие типы, а целые. Например
|
| Автор: argamidon 4.12.2011, 18:34 | ||
| Mirkes спасибо. я пару дней назад уже решил эту задачу и получи точно такой же ответ 44 минуты. мой второй способ которым я решил задачу очень похож на ваш. правда я не использовал "встречную скорость 5,5 градусов". там где комметарии, это я пытался выводить формулу. уравнение тоесть , изза отсутствия которого я решал эту задачу с помощь цикла(первый пост). конечно коряво, и через Ж. но работает вот листинг =)
|