IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Задача на время, Помогите найти алгоритм!
Perfez
сообщение 17.02.2007 18:59
Сообщение #1


Бывалый
***

Группа: Модераторы
Сообщений: 231
Пол: Женский

Репутация: -  6  +


Важно:Сразу прошу вас не пишите готовую программу ,а только объясните сам алгоритм в кратце: unsure.gif
yes2.gif Это задача с онлайн олимпиады:http://www.hsin.hr/coci/ yes2.gif
Даётся нынешнее время и время планировки,нужно сколько осталось(таймер своего рода).
Пример:
input
20:00:00
04:00:00
output
08:00:00

input
12:34:56
14:36:22
output
02:01:26

Не могу понять алгоритм,ну никак?

П.С:Вольво сразу предупреди если я что-то не то сделал,может не учёл правила unsure.gif

Сообщение отредактировано: Perfez - 5.03.2007 16:48
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 17.02.2007 19:09
Сообщение #2


Гость






Переводи стартовое и финальное время в секунды, отнимай одно от другого, и результат - опять в часы:минуты:секунды...

Возможен один исключительный случай - если результат будет отрицательным. Сам догадаешься, что надо сделать в этом случае?
 К началу страницы 
+ Ответить 
Perfez
сообщение 17.02.2007 19:13
Сообщение #3


Бывалый
***

Группа: Модераторы
Сообщений: 231
Пол: Женский

Репутация: -  6  +


Цитата
Переводи стартовое и финальное время в секунды, отнимай одно от другого, и результат - опять в часы:минуты:секунды...

Спасибо,но я об этом ,знал. smile.gif Только не говори что если знал почему не сказалюЯ именно и на это зацикливаюсь:Вот например с этим примером:
Цитата
input
20:00:00
04:00:00
output
08:00:00

??? blink.gif wacko.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 17.02.2007 19:14
Сообщение #4


Гость






Я тебе сказал, что есть исключительный случай? Вот он... Тебе надо догадаться, что делать...
 К началу страницы 
+ Ответить 
мисс_граффити
сообщение 17.02.2007 19:19
Сообщение #5


просто человек
******

Группа: Модераторы
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


нюанс, который не совсем понятен по условию: ограничения.
максимальное оставшееся время - сутки? или сколько? дата же не задана...


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Perfez
сообщение 17.02.2007 19:19
Сообщение #6


Бывалый
***

Группа: Модераторы
Сообщений: 231
Пол: Женский

Репутация: -  6  +


(20:00:00-04:00:00)+((24:00:00-20:00:00)/2)
Может это??? wink.gif


Добавлено через 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.

Нужен ли перевод?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
мисс_граффити
сообщение 17.02.2007 19:21
Сообщение #7


просто человек
******

Группа: Модераторы
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


зачем такие сложности?!
подумай, в каком случае время будет отрицательным... сразу станет понятно, что надо сделать

ага, нашла:
Цитата
The time Borko wants is at least one second and at most 24 hours


Сообщение отредактировано: мисс_граффити - 17.02.2007 19:24


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Perfez
сообщение 17.02.2007 19:25
Сообщение #8


Бывалый
***

Группа: Модераторы
Сообщений: 231
Пол: Женский

Репутация: -  6  +


ну,незнаю...когда есть дело АМ и РМ?То есть если стрелка перейдёт 12... blink.gif

Добавлено через 58 сек.
Что нашла?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
мисс_граффити
сообщение 17.02.2007 19:26
Сообщение #9


просто человек
******

Группа: Модераторы
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


AM -> PM у тебя отслеживается: 11:00 -> 13.00
разница, как видишь, положительна.

про ограничения.
вот это:
Цитата
максимальное оставшееся время - сутки? или сколько? дата же не задана...


Сообщение отредактировано: мисс_граффити - 17.02.2007 19:27


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Perfez
сообщение 17.02.2007 19:27
Сообщение #10


Бывалый
***

Группа: Модераторы
Сообщений: 231
Пол: Женский

Репутация: -  6  +


прибавлю к получившемуся отрицательному 24:00:00??? blink.gif

Сообщение отредактировано: Perfez - 17.02.2007 19:28
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
мисс_граффити
сообщение 17.02.2007 19:29
Сообщение #11


просто человек
******

Группа: Модераторы
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


Да.
Смотри: когда происходит переход на новые сутки, мы считаем, сколько осталось старых суток и сколько возьмется от новых, т.е.:
(24:00-20:00)+04:00=(04:00-20:00)+24:00


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Perfez
сообщение 17.02.2007 19:31
Сообщение #12


Бывалый
***

Группа: Модераторы
Сообщений: 231
Пол: Женский

Репутация: -  6  +


урррррррррррраааааааааа!спасибо good.gif

Добавлено через 15 мин.
В чём проблема?

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;
Begin
For x:=1 to 2 do
Begin
Val(Copy(c,1,Pos(':',c)-1),a[x],y);
Delete(c,1,Pos(':',c));
End;
Val(c,a[3],y);
End;
Begin
ReadLn©;
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 div 3600,':');
e:=e mod 3600;
Write(e div 60,':');
Write(e mod 60);
End.


blink.gif wacko.gif






Добавлено через 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;
Begin
For x:=1 to 2 do
Begin
Val(Copy(c,1,Pos(':',c)-1),a[x],y);
Delete(c,1,Pos(':',c));
End;
Val(c,a[3],y);
End;
Begin
ReadLn©;
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 div 3600<10 then Write('0',e div 3600,':')
else Write(e div 3600,':');
e:=e mod 3600;
If e div 60<10 then Write('0',e div 60,':')
else Write(e div 60,':');
If e mod 60<10 then Write('0',e mod 60)
else Write(e mod 60);
End.


yes2.gif






Добавлено через 2 мин.
Не нужно проверять он прошёл все тесты=по-моему... wink.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 17.02.2007 20:10
Сообщение #13


Гость






Цитата
В чём проблема?
Какая из них? У тебя в программе НЕ одна проблема... Первая из них: ты уверен, что в FPC индексация строк начинается с 1? smile.gif

Добавлено через 1 мин.
P.S. Это же самое делается в 3 строки (с использованием такого мощного компилятора - тем более) ...
 К началу страницы 
+ Ответить 
Perfez
сообщение 17.02.2007 20:14
Сообщение #14


Бывалый
***

Группа: Модераторы
Сообщений: 231
Пол: Женский

Репутация: -  6  +


Kak?
smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Perfez
сообщение 17.02.2007 20:37
Сообщение #15


Бывалый
***

Группа: Модераторы
Сообщений: 231
Пол: Женский

Репутация: -  6  +


Обо что споткнулся я?

Сообщение отредактировано: Perfez - 17.02.2007 20:52


Эскизы прикрепленных изображений
Прикрепленное изображение
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 17.02.2007 21:14
Сообщение #16


Гость






Цитата
Обо что споткнулся я?
smile.gif
Вот об это:
If (a[1]>=b[1]) and (a[2]>=b[2]) and (a[3]>=b[3]) then e:=e+24*3600;
А если так:
с = '20:00:00' и d = '04:10:10', то что ты получишь в результате, подумай...

 К началу страницы 
+ Ответить 
Perfez
сообщение 17.02.2007 21:21
Сообщение #17


Бывалый
***

Группа: Модераторы
Сообщений: 231
Пол: Женский

Репутация: -  6  +


.

Сообщение отредактировано: Perfez - 17.02.2007 22:02
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 17.02.2007 21:45
Сообщение #18


Гость






Я ж показал тебе: условие не выполняется, а увеличивать E все равно надо... Ответы читай внимательно, все равно готового решения не будет...
 К началу страницы 
+ Ответить 
Perfez
сообщение 17.02.2007 21:55
Сообщение #19


Бывалый
***

Группа: Модераторы
Сообщений: 231
Пол: Женский

Репутация: -  6  +


Absolute True Solution:
Абсолютное Правильное Решение:


Добавлено через 2 мин.
Вольво:Извини до этого не видел твои посты unsure.gif и я не искал готовых решений rolleyes.gif


Прикрепленные файлы
Прикрепленный файл  natrij1.pas ( 661 байт ) Кол-во скачиваний: 158
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 14:20
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"