Определить время до момента, когда часовая и минутная стрелки на циферблате будут перпендикулярны друг другу - C (СИ)
Формулировка задачи:
Не могу написать программу на языке Си. Помогите пожалуйста. Заранее Спасибо!
Целые числа m и n определяют время суток (0m11; 0n59). Определить наименьшее время, которое должно пройти до того момента, когда часовая и минутная стрелки на циферблате расположатся перпендикулярно друг другу.
Решение задачи: «Определить время до момента, когда часовая и минутная стрелки на циферблате будут перпендикулярны друг другу»
textual
Листинг программы
#include <stdio.h>
int main()
{
unsigned min, hour, k, x;
puts("Enter 0 <= hours < 12:");
while(1 != scanf("%u", &hour) || hour < 0 || hour > 11){
getchar();
puts("Data entry error!Try again.");
}
puts("Enter 0 <= minutes < 60:");
while(1 != scanf("%u", &min) || min < 0 || min > 59){
puts("Data entry error!Try again.");
getchar();
}
k = hour * 5 + (min / 12);
if(k > 60)
k -= 60;
x = k > min + 15 ? k - (min + 15) : 15 - (min - k);
printf("%u\n", x += x / 12);
return 0;
}
Объяснение кода листинга программы
- Вводится значение переменной
min(количество минут). - Вводится значение переменной
hour(часы). - Переменная
kвычисляется как (час * 5) + ((минуты / 12)). - Если
kбольше 60, тоkуменьшается на 60. - Переменная
xвычисляется как (15 - (минуты -k)) при условии, чтоkбольшеминуты + 15, иначеxвычисляется как 15. - Значение переменной
xувеличивается наx/ 12. - Выводится значение переменной
x. - Программа завершается.