Преобразование дат из текстовой строки

Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду

Ответить
A_Hakar
Сообщения: 1
Зарегистрирован: 21 дек 2005, 20:17

Помогите преобразовать даты из текстовой строки следующим образом:
Строка:
01.02.05 02.02.05 03.02.05 06.02.05 08.02.05 09.02.05
Нужно получить такую строку:
01.02.05-03.02.05 06.02.05 08.02.05-09.02.05
Blood_Magic
Сообщения: 273
Зарегистрирован: 30 июн 2005, 14:53

НЕ совсем понятно, точнее совсем не понятно, но народ явно ленится.
- Чем юзер похож на обезьяну?
- Он жмет на все, что жмется, дергает все, что дергается и крутит все, что крутится.
- Чем юзер отличается от обезьяны?
- У обезьяны хватает ума не воспроизводить ту последовательность, которая приводит к краху системы.
Аватара пользователя
Duncon
Сообщения: 2085
Зарегистрирован: 10 окт 2004, 14:11
Откуда: Питер
Контактная информация:

Да уж объясни попонятней, если у тебя условия не меняются, то это совсем просто...
[syntax=Delphi] [/syntax]
Хыиуду
Сообщения: 2442
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

Эгм... я так понял, дан список дат (кстати, обязательно в хронологическом порядке), надо его преобразовать так, что дни, идущие подряд, например, 03.02.05, 04.02.05, 05.02.05 заменялись их диапазоном (03.02.05 - 05.02.05).
В принципе, ничего сложного нет. Запоминаем первую дату как "начало диапазона". Начиная с начала строки (то есть с той же первой даты) считываем дату (6 символов), запоминаем как Дата1 . Считываем следующую дату (Дата2). Даты в формате День.Месяц.Год. Преобразовываем строку в числа (это несложно)
Если день2=день1+1
или
(день2=1) и (месяц2=месяц1+1)
или
(день2=1) и (Месяц2=1) и (Год2=Год1+1)
то считываем следующую дату (дни идут подряд). Если нет, то:
Если "начало диапазона"=день1 (т.е. не было идущих подряд дат), то записываем в полученную строку "начало диапазона". В противном случае "начало диапазона"+" - "+"дата1".
Запоминаем Дата2 как новое "начало диапазона". Продолжаем считывать.
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Ответить