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

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

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

 
 Ответить  Открыть новую тему 
> Задача на время, Помогите найти алгоритм!
сообщение
Сообщение #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 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






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

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


Бывалый
***

Группа: Пользователи
Сообщений: 231
Пол: Женский

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


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

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

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


Гость






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


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

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

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


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


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


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

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

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


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

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


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


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


Бывалый
***

Группа: Пользователи
Сообщений: 231
Пол: Женский

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


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

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


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

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

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


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

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


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


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


Бывалый
***

Группа: Пользователи
Сообщений: 231
Пол: Женский

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


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

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


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

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

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


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


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Гость






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

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


Бывалый
***

Группа: Пользователи
Сообщений: 231
Пол: Женский

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


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


Бывалый
***

Группа: Пользователи
Сообщений: 231
Пол: Женский

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


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

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


Эскизы прикрепленных изображений
Прикрепленное изображение
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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', то что ты получишь в результате, подумай...

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


Бывалый
***

Группа: Пользователи
Сообщений: 231
Пол: Женский

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


.

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


Гость






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


Бывалый
***

Группа: Пользователи
Сообщений: 231
Пол: Женский

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


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


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


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

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

 





- Текстовая версия 29.03.2024 12:11
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name