• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о проекте и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Очередная задачка, на этот раз несколько связана со временем.

Alexander Mece

Ученик
Регистрация
17 Дек 2010
Сообщения
7
Реакции
0
Баллы
0
Очередная задачка, на этот раз несколько связана со временем.

Даны целые числа m, n (0 < m ≤ 12,0 ≤ n < 60), указывающие момент времени: «m часов, n минут». Определить наименьшее время (число полных минут), которое должно пройти до того момента, когда часовая и минутная стрелки на циферблате:
а) совпадут,
б) расположатся перпендикулярно друг другу.
 
Предполагаю, что тут надо отталкиваться от соотношения "час к минуте" как 1/60 к 1/3600 и, соответственно, для а) - уравнять соотношения (m+х)/60=(n+х)/3600 и вычислить х; для б) соответственно, нужно использовать сдвиг на 15 единиц, чтобы получить перпендикуляр.
 
Вот. Не очень, правда, изящно, но уж что есть:
Код:
VAR
 h,m,Angle_h,Angle_m,A_h,A_m,min:Integer;
BEGIN
 Write('Hours = ');
 ReadLn(h);
 Write('Minutes = ');
 ReadLn(m);
 Angle_h:=h*30+(m div 2);
 Angle_m:=m*6;
 A_h:=Angle_h;
 A_m:=Angle_m;
 min:=0;
 Repeat
  Inc(min);
  A_h:=h*30+((m+min) div 2);
  If A_h>360 then A_h:=A_h-360;
  Inc(A_m,6);
  If A_m>360 then A_m:=A_m-360;
 Until ABS(A_h-A_m)<6;
 WriteLn('Hands will coincide in ',min,' minutes');
 A_h:=Angle_h;
 A_m:=Angle_m;
 min:=0;
 Repeat
  Inc(min);
  A_h:=h*30+((m+min) div 2);
  If A_h>360 then A_h:=A_h-360;
  Inc(A_m,6);
  If A_m>360 then A_m:=A_m-360;
 Until ABS(ABS(A_h-A_m)-90)<6;
 WriteLn('Hands will form 90-degrees angle in ',min,' minutes');
 ReadLn;
END.
Здесь m и n заменены на h (hours) и m (minutes), соответственно. Так всё-таки удобнее.
И еще. Принято, что совпадение стрелок означает, что их угловое расхождение не превышает 6°, т.е. угла, соответствующего одной временнОй минуте. И для 90° - аналогично.
 
Vladimir_S Большое вам от меня - спасибо. Ваша помощь просто неоценима.
 
да большое спасибо, очень пригодилось)
 
Назад
Сверху