урок 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
- 642 reads