урок 15 задание 23
Primary tabs
Задача:
Напишите программу, которая принимает у пользователя два целых числа (часы и минуты) и выводит в консоль полученное время в формате бинарных ASCII-часов 0-11 ч. и 0-59 мин.
Пояснение:
в верхнем ряду отображают текущий час 4мя лампочками (битами) если лампа горит, складываем ее значение в основное т.е. 2 + 1 = 3 часа (в 12ти часовом формате)
В нижней линии 6 лампочек (бит) и они кодируют 16 + 8 + 1 = 25 минут.Для случая время 3:25 ASCII-вариант будет выглядеть как:
- - + + - + + - - +А, если бы время было 10:40, то :
+ - + - + - + - - -
program lessson_15; var h, min: integer; procedure how_much_hours(var h: integer); var arr8: array [1..4] of char; i: integer; begin for i := low(arr8) to high(arr8) do arr8[i] := '-'; while (h >= 1) and (h <> 12) do begin if h >= 8 then begin h -= 8; arr8[1] := '+'; end; if h >= 4 then begin h -= 4; arr8[2] := '+'; end; if h >= 2 then begin h -= 2; arr8[3] := '+'; end; if h >= 1 then begin h -= 1; arr8[4] := '+'; end; end; for i:= low(arr8) to high (arr8) do write(arr8[i], ' '); writeln(); end; procedure how_much_minutes(var min: integer); var arr32: array [1..6] of char; i: integer; begin for i := low(arr32) to high(arr32) do arr32[i] := '-'; while (min >= 1) and (min <> 60) do begin if min >= 32 then begin min -= 32; arr32[1] := '+'; end; if min >= 16 then begin min -= 16; arr32[2] := '+'; end; if min >= 8 then begin min -= 8; arr32[3] := '+'; end; if min >= 4 then begin min -= 4; arr32[4] := '+'; end; if min >= 2 then begin min -= 2; arr32[5] := '+'; end; if min >= 1 then begin min -= 1; arr32[6] := '+'; end; end; for i:= low(arr32) to high (arr32) do write(arr32[i], ' '); writeln(); end; begin writeln('Please, enter hours and minutes:'); readln(h, min); if (h < 13) and (min < 61) then begin writeln('Time is ', h, ':', min); how_much_hours(h); how_much_minutes(min); end else writeln('Wrong time.'); end.
- Log in to post comments
- 463 reads