INFOpudding - ИТ в образовании и не только
Четверг, 04.03.2021, 18:35
» Меню сайта
» Категории раздела
Информатика и ИКТ [0]
Программирование [6]
Математика [0]
» Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

» Форма входа
Главная » Статьи » Олимпиадные задания » Программирование

Решение задания 2 Всероссийской олимпиады по информатике 2010

Задача 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 не создан, программа выдаст ошибку.

Категория: Программирование | Добавил: anna (03.09.2011) | Автор: Anna
Просмотров: 2176 | Комментарии: 1 | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
» Поиск
» Учебные заведения
Брянский государственный университет академика И.Г. Петровского Брянская государственная инженерно-технологическая академия
Copyright MyCorp © 2021|Бесплатный конструктор сайтов - uCoz