1. Заголовок темы должен быть информативным. В противном случае тема удаляется ... 2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения. 3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали! 4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора). 5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM! 6. Одна тема - один вопрос (задача) 7.Проверяйте программы перед тем, как разместить их на форуме!!! 8.Спрашивайте и отвечайте четко и по существу!!!
Важно:Сразу прошу вас не пишите готовую программу ,а только объясните сам алгоритм в кратце: Это задача с онлайн олимпиады:http://www.hsin.hr/coci/ Даётся нынешнее время и время планировки,нужно сколько осталось(таймер своего рода). Пример: input 20:00:00 04:00:00 output 08:00:00
input 12:34:56 14:36:22 output 02:01:26
Не могу понять алгоритм,ну никак?
П.С:Вольво сразу предупреди если я что-то не то сделал,может не учёл правила
нюанс, который не совсем понятен по условию: ограничения. максимальное оставшееся время - сутки? или сколько? дата же не задана...
--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует. На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
(20:00:00-04:00:00)+((24:00:00-20:00:00)/2) Может это???
Добавлено через 1 мин.
Цитата
The first line of input contains the current time in hh:mm:ss format (hours, minutes, seconds). The hours will be between 0 and 23 (inclusive) and the minutes and seconds between 0 and 59. The second line contains the time of the explosion in the same format.
зачем такие сложности?! подумай, в каком случае время будет отрицательным... сразу станет понятно, что надо сделать
ага, нашла:
Цитата
The time Borko wants is at least one second and at most 24 hours
Сообщение отредактировано: мисс_граффити -
--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует. На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
AM -> PM у тебя отслеживается: 11:00 -> 13.00 разница, как видишь, положительна.
про ограничения. вот это:
Цитата
максимальное оставшееся время - сутки? или сколько? дата же не задана...
Сообщение отредактировано: мисс_граффити -
--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует. На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
Да. Смотри: когда происходит переход на новые сутки, мы считаем, сколько осталось старых суток и сколько возьмется от новых, т.е.: (24:00-20:00)+04:00=(04:00-20:00)+24:00
--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует. На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
type
time=array [1..3] of byte;
var
a,b:time;
c,d:string[8];
e,f:int64;
Procedure Strong(var c:string[8]; var a:time);
var
x:byte;
y:integer;
BeginFor x:=1to2doBegin
Val(Copy(c,1,Pos(':',c)-1),a[x],y);
Delete(c,1,Pos(':',c));
End;
Val(c,a[3],y);
End;
Begin
ReadLn(c);
Strong(c,a);
ReadLn(d);
Strong(d,b);
If c=d then WriteLn('00:00:00');
e:=(b[1]*3600+b[2]*60+b[3])-(a[1]*3600+a[2]*60+a[3]);
If (a[1]>=b[1]) and (a[2]>=b[2]) and (a[3]>a[3]) then e:=e+24*3600;
Write(e div3600,':');
e:=e mod3600;
Write(e div60,':');
Write(e mod60);
End.
Добавлено через 14 мин. Может проверите?.Всё готово:
type
time=array [1..3] of byte;
var
a,b:time;
c,d:string[8];
e,f:int64;
Procedure Strong(var c:string[8]; var a:time);
var
x:byte;
y:integer;
BeginFor x:=1to2doBegin
Val(Copy(c,1,Pos(':',c)-1),a[x],y);
Delete(c,1,Pos(':',c));
End;
Val(c,a[3],y);
End;
Begin
ReadLn(c);
Strong(c,a);
ReadLn(d);
Strong(d,b);
e:=(b[1]*3600+b[2]*60+b[3])-(a[1]*3600+a[2]*60+a[3]);
If (a[1]>=b[1]) and (a[2]>=b[2]) and (a[3]>=b[3]) then e:=e+24*3600;
If e div3600<10then Write('0',e div3600,':')
else Write(e div3600,':');
e:=e mod3600;
If e div60<10then Write('0',e div60,':')
else Write(e div60,':');
If e mod60<10then Write('0',e mod60)
else Write(e mod60);
End.
Добавлено через 2 мин. Не нужно проверять он прошёл все тесты=по-моему...