![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
Евгений |
![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Сообщений: 36 Пол: Мужской Реальное имя: Евгений Репутация: ![]() ![]() ![]() |
Решаю задание по записям, все вроде понятно, но есть один вопрос. Какой тип данных(и какой формат ДД.ММ.ГГ или еще как?) лучше использовать для нахождения минимальной(максимальной) даты?
|
sheka |
![]()
Сообщение
#2
|
![]() Я. ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 809 Пол: Мужской Реальное имя: Саша Репутация: ![]() ![]() ![]() |
Если в делфях, то TDateTime.
Если в паскале, то запись с полями Дата Месяц Год, а потом это все как-то переводить в дни, упрощенно(приближенно) можно так: Дата+30*(Месяц+12*Год). Но для этого конкретного задания нахождения минимальной(максимальной) даты, я лично бы использовал строки с форматом ГГГГ.ММ.ДД и проверял бы их на больше меньше. Это всегда даст однозначный ответ. Добавлено через 11 мин. Извините, не внимательно прочитал задание ![]() Если использовать записи, то можно так a: record А потом если приближенно Дата+30*(Месяц+12*Год) не устраивает, делать кучу проверок на високосный/невисокосный год, на количество дней в месяце. |
volvo |
![]()
Сообщение
#3
|
Гость ![]() |
Цитата А потом если приближенно Дата+30*(Месяц+12*Год) не устраивает, делать кучу проверок на високосный/невисокосный год, на количество дней в месяце. А если написать функцию сравнения, которая будет возвращать (+1) когда First > Second, 0 если даты равны, и (-1) если First < Second:type - это уже очень сложно? |
Евгений |
![]()
Сообщение
#4
|
Новичок ![]() Группа: Пользователи Сообщений: 36 Пол: Мужской Реальное имя: Евгений Репутация: ![]() ![]() ![]() |
|
sheka |
![]()
Сообщение
#5
|
![]() Я. ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 809 Пол: Мужской Реальное имя: Саша Репутация: ![]() ![]() ![]() |
Эта фраза меня касалась
![]() Можно. Тогда и получается "очень сложно". Добавлено через 2 мин. Хотя эта функция и сравнивает дни, месяцы и годы, просто делает она это очень красиво. |
volvo |
![]()
Сообщение
#6
|
Гость ![]() |
Цитата Для меня пока да, но попытаюсь разобраться. Что именно из приведенного кода вызывает сложность? Описание одной функции внутри другой? |
Евгений |
![]()
Сообщение
#7
|
Новичок ![]() Группа: Пользователи Сообщений: 36 Пол: Мужской Реальное имя: Евгений Репутация: ![]() ![]() ![]() |
Пока набросал вот это:
program data; Не очень красиво. но работает ![]() volvo по вашему решению есть несколько вопросов: type Вы меня извините возможно за глупые вопросы. P.S: Интересно а как все это реализовать если дат будет например 10 или больше? |
volvo |
![]()
Сообщение
#8
|
Гость ![]() |
Цитата {$B-}//что это?// Это гарантия включенной "короткой схемы" вычисления логических выражений. Что такой "короткая схема", знаешь? Это - когда логическое выражение вычисляется до тех пор, пока не станет очевидным результат. Теперь, смотри что происходит.
Хочешь убедиться, что вычисление логического выражения действительно прерывается в зависимости от того, чем различаются даты? добавь строчку: Цитата function Impl (var R : Integer; A, B : Integer) : Boolean; Цитата P.S: Интересно а как все это реализовать если дат будет например 10 или больше? Интересно, а если у тебя есть массив из 10 целых чисел (или больше), как ты в нем находишь минимум? Может, сравниваешь каждое число с текущим минимумом, и если оно еще меньше - то запоминаешь новый индекс? Чем даты хуже? Функция сравнения у тебя есть. Разницы вообще не вижу:IndexMin := 1; Вот и все, в результате dat[IndexMin] - минимальная дата. |
Евгений |
![]()
Сообщение
#9
|
Новичок ![]() Группа: Пользователи Сообщений: 36 Пол: Мужской Реальное имя: Евгений Репутация: ![]() ![]() ![]() |
Даа.. В вычислениях логических выражений у меня пробел, будем восстанавливать...
Цитата Разницы вообще не вижу: Теперь я тоже ![]() ![]() Сообщение отредактировано: Евгений - 22.01.2011 22:48 |
![]() ![]() |
![]() |
Текстовая версия | 1.07.2025 6:07 |