#include
#include
#include
#include
// Функция для отображения русских букв.
char bufRus[256];
char* rus(const char* text)
{
CharToOem(text,bufRus);
return bufRus;
}
// Функция определяет через сколько минут часовая и минутная стрелки будут образовывать угол в 90 градусов.
// Часовая стрелка имеет дискретное (почасовое) перемещение, т.е. смещается только в целые часы.
int diffTo90(int h, int m)
{
// Отыскиваемое смещение (мин).
int v = 0;
// Приводим к 12-часовому формату.
if (h > 12)
h -= 12;
// Уже 90 градусов.
if (h == m + 15 || h == m - 15)
return 0;
// Крайний случай, когда 59 мин на часах.
if (m == 59)
{
v = 1;
m = 0;
h++;
}
if (h == 0 || h == 12)
h = 0;
else
h = h * 5;
// Обход для поиска.
while (abs(m - h) != 15 && abs(m - h) != 45)
{
m++;
v++;
if (m == 60)
{
h = h + 5;
if (h == 60)
h = 0;
}
}
return v;
}
int main()
{
int h, m;
puts(rus("Задано время в часах и минутах.\n"
"Определить через сколько минут часовая и минутная стрелки будут образовывать угол в 90 градусов.\n"
"Часовая стрелка имеет дискретное (почасовое) перемещение.\n"));
do
{
printf(rus("Введите часы и минуты через пробел ->"));
scanf_s("%d %d", &h, &m);
} while (h > 24 || h 59 || m = 0));
printf(rus("Результат (мин): %d\n"), diffTo90(h, m));
getchar();
return 0;
}