Задача 23 Урок 15

Задача 23 Урок 15

На картинке выше фото часов, которые показывают время следующим образом:

в верхнем ряду отображают текущий час 4мя лампочками (битами) если лампа горит,
складываем ее значение в основное т.е. 2 + 1 = 3 часа (в 12ти часовом формате)
В нижней линии 6 лампочек (бит) и они кодируют 16 + 8 + 1 = 25 минут.
Задача:
Напишите программу, которая принимает у пользователя два целых числа
(часы и минуты) и выводит в консоль полученное время в формате бинарных
ASCII-часов 0-11 ч. и 0-59 мин.

Также отметим, что:

12 часов "не выводится" а соответствует пустым значениям/нулям (- - - -)
аналогично в минутах "не выводится" 60 минут (- - - - - -)
Для случая с фотографии выше (время 3:25) ASCII-вариант будет выглядеть как:

- - + +
- + + - - +

А, если бы время было 10:40, то :

+ - + -
+ - + - - -

type
  arr1 = array [1..4] of integer;
  arr2 = array [1..6] of integer;

var i,
    j,
    m,
    h : integer;
    a : Arr1;
    b : arr2;

begin
  a[1] := 8;
  a[2] := 4;
  a[3] := 2;
  a[4] := 1;
  b[1] := 32;
  b[2] := 16;
  b[3] := 8;
  b[4] := 4;
  b[5] := 2;
  b[6] := 1;

  i := 1;
  j := 1;
  writeln('Сколько время?');
  read(h, m);

  while i <= high(a) do
  begin
    if h = 12 then
      write('- ')
    else
      if h >= a[i] then
      begin
        write('+ ');
        h := h - a[i];
      end
      else
        write('- ');
    i += 1;
  end;
  writeln();

  while j <= high(b) do
  begin
    if m = 60 then
      write('- ')
    else
      if m >= b[j] then
      begin
        write('+ ');
        m := m - b[j];
      end
      else
        write('- ');
    j += 1;
  end;
  writeln();
  write('Мавр сделал своё дело, мавр может уходить');
  readln();readln();