![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
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 Пол: Мужской Реальное имя: Евгений Репутация: ![]() ![]() ![]() |
Даа.. В вычислениях логических выражений у меня пробел, будем восстанавливать...
Цитата Разницы вообще не вижу: Теперь я тоже ![]() ![]() Сообщение отредактировано: Евгений - |
![]() ![]() |
![]() |
Текстовая версия | 9.09.2025 17:07 |