HOME ПРИМЕРЫ THANKS НОВИЧКАМ ДОКИ LINKS JavaScript Mail


 
В этот день много лет назад...
28 марта. В 1970 году (54 года назад) - Произошло землетрясение в Западной Турции. Погибло более 1 тыс. человек.
 
 

Turbo Pascal Examples.
Стрелки часов

Графика:
Построение графика функции
Прыгающий по экрану мячик.
Качание маятника.
Вложенные цветные круги.
Броуновское движение. Использование объектов.
Матрицы и массивы:
Сортировка элементов массива.
Удаление одинаковых элементов.
Простой пример на поворот матрицы.
Сортировка методом Шелла. +функции измерения временных интервалов.
Проверка выпуклости многоугольника.
Перемоножение матриц
Вычисление определителя матрицы. Рекурсия.
Нахождение обратной матрицы.
Задача об автостоянке.
Рекурсия. Подземелье сокровищ.
Численные методы:
Задачка на определение угла между стрелками часов.
Проверка на принадлежность точки многоугольнику.
Нахождение точки пересечения двух отрезков на плоскости.
Сортировка методом Шелла. +функции измерения временных интервалов.
Сортировка методом "пузырька". Пример на динамические структуры данных. Связанные списки.
Нахождение корня функции методом половинного деления.
Вычисление арккосинуса
Нахождение суммы цифр натурального числа.
Работа с фалами:
Рекурсивное сканирование директорий.
Работа со строками:
Работа со словами в предложении с разделителями.
Простейший синтаксический анализатор для распознавания и вычисления многчлена.
Синтаксический анализатор для распознавания и вычисления многчлена.
Работа со строками: смена кодировки, удаление тегов из HTML текста, обработка
Переименование файлов из кириллицы в латиницу.
Выдача контекстной подсказки.
Частотный словарь символов.
Подсчет повторяющихся символов в строке.
Ссылочные переменные:
Моделирование стека.
Пасьянс "Косынка".
Игры:
Пасьянс "Косынка".
Игра "Питон"
Игра "Анацефал". Пример использования объектов.
Игра "Минное поле"
Большие проекты:
Электронная картотека (без исходника)


 
Определение угла между стрелками часов
Даны целые числа H и M (0 < H <= 12 , 0 <= M <= 60), указывающие момент времени : "H часов M минут" Определить наименьшее время (число полных минут), которое должно пройти до того момента, когда часовая и минутная стрелки расположатся перпендикулярно друг другу.

Прежде всего убедимся, что если решать задачу в целых числах, то искомых моментов времени всего два 3:00 и 9:00.


const eps = 0.00001;
var h,m,s,hs,i,k:byte;
function rightAngle(h,m,s,hs:byte):boolean;
var a,r:real;
  begin
  a:=pi/6*(h-11*m/60-11*s/(300*12)-11*hs/(300*12*100));
  r:=cos(a);
  rightAngle:=(abs(r)<eps);
  if (abs(r)<eps) then
    write('a=',180*a/pi:16:9,' ');
  end;
begin
writeln;
for h:=0 to 11 do
for m:=0 to 59 do
for s:=0 to 59 do
for hs:=0 to 99 do
  if (rightAngle(h,m,s,hs))
    then writeln(h:2,':',m:2,':',s:2,':',hs:2,' ugol pryamoy');
end.


Angle HH:MM:SS:HS
------------------------
-90.000166667 0:16:21:82
-269.999583330 0:49:05:45
-270.000500000 0:49:05:46
-89.999916667 1:21:49:09
-270.000250000 1:54:32:73
-89.999666667 2:27:16:36
90.000000000 3:00:00:00
-90.000333333 3:32:43:64
90.000250000 4:05:27:27
-90.000083334 4:38:10:91
90.000500000 5:10:54:54
89.999583333 5:10:54:55
-89.999833333 5:43:38:18
89.999833333 6:16:21:82
-89.999583334 6:49:05:45
-90.000500000 6:49:05:46
90.000083334 7:21:49:09
-90.000250000 7:54:32:73
90.000333333 8:27:16:36
270.000000000 9:00:00:00
89.999666667 9:32:43:64
270.00025000010:05:27:27
89.99991666710:38:10:91
270.00050000011:10:54:54
269.99958333011:10:54:55
90.00016666711:43:38:18


А дальше уже просто:

tm = h*60+m; { число минут до заданного момента }
if tm <=180 { если заданное время до 3:00 включительно }
  then p:=180-tm
else if (tm <= 540) { время с 3:01 до 9:00 включительно }
  them p:=560-tm
else { время после 9:01 включительно }
  p:=720-tm+180 { суммируем время до полуночи и 3 часа до 3:00}
writeln('число полных минут: ',p);

 

 

 

 

 

 

 


HOME