Задача
2. Сон
Петя решил
посмотреть интересную передачу поздно ночью. Его современный телевизор обладает
функцией автоматического отключения по прошествии некоторого периода
времени. Петя понимал, что хоть передача
и интересная, он скорее всего уснет под телевизором, не дождавшись окончания
программы. Чтобы сэкономить электроэнергию, Петя установил значение времени,
через которое телевизор будет отключен. Напишите программу, которая определит,
когда будет автоматически выключен телевизор.
Формат входных данных
В первой строке входного файла записано текущее время в
формате ЧЧ:ММ:СС (с ведущими нулями). При этом оно удовлетворяет ограничениям:
ЧЧ - от 00 до 23, ММ и СС - от 00 до 60.
Во второй строке записан интервал времени, который должен
быть измерен. Интервал записывается в формате Ч:М:С (где Ч, М и С - от 0 до 109,
без ведущих нулей). Дополнительно, если Ч=0 (или Ч=0 и М=0), то они могут быть
опущены. Например, 100:60 на самом деле означает 100 минут 60 секунд, что то же
самое, что 101:0 или 1:41:0. А 42 обозначает 42 секунды. 100:100:100 - 100
часов, 100 минут, 100 секунд, что то же самое, что 101:41:40.
Формат выходных данных
В выходной файл нужно вывести в формате ЧЧ:ММ:СС время,
когда телевизор будет отключен. При этом если это будет сделано не в текущие
сутки, то дальше должна следовать запись +<кол‑во> дней. Например,
если телевизор будет отключен на следующий день – то +1.
taimer.ini
|
taimer.out
|
01:01:01
48:0:0
|
01:01:01+2
|
01:01:01
58:119
|
02:01:00
|
23:59:59
1
|
00:00:00+1
|
Программа на
языке Pascal
program taimer;
var ft:text;
s,st:string;
i,j,k,d,Er:integer;
timer:array[1..3] of integer;
BEGIN
Assign(ft,'taimer.ini');
Reset(ft);
Readln(ft,s);
Readln(ft,st);
Close(ft);
k:=3;j:=length(st);
for i:=j downto 1 do
if st[i]=':' then
begin
val(copy(st,i+1,j-i),timer[k],Er);
k:=k-1;
j:=i-1;
end;
val(copy(st,1,j),timer[k],Er);
for i:=1 to 3 do
begin
val(copy(s,3*i-2,2),k,Er);
timer[i]:=timer[i]+k;
end;
s:='';
d:=(timer[1]+((timer[2]+(timer[3] div 60))
div 60)) div 24;
timer[1]:=(timer[1]+((timer[2]+(timer[3]
div 60)) div 60)) mod 24;
str(timer[1],st);
if (timer[1] div 10)=0 then s:='0'+st+':'
else s:=st+':';
timer[2]:=(timer[2]+(timer[3] div 60)) mod
60;
str(timer[2],st);
if (timer[2] div 10)=0 then s:=s+'0'+st+':'
else s:=s+st+':';
timer[3]:=timer[3] mod 60;
str(timer[3],st);
if (timer[3] div 10)=0 then s:=s+'0'+st
else s:=s+st;
writeln(d);
str(d,st);
if st<>'0' then s:=s+'+'+st;
Assign(ft,'taimer.out');
Rewrite(ft);
write(ft,s);
close(ft)
end.
Замечание. В
случае если файл taimer.ini не создан, программа выдаст
ошибку.
|