простецкая задача, а решить не решу ..) |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
простецкая задача, а решить не решу ..) |
__V |
Сообщение
#1
|
Группа: Пользователи Сообщений: 1 Пол: Женский Реальное имя: Вера Репутация: 0 |
Даны две тройки чисел a,b,c и x,y,z. (число, месяц, год). Определить количество полных лет, прошедших между этими датами.
помогите, пожалуйста Сообщение отредактировано: __V - |
Krjuger |
Сообщение
#2
|
Профи Группа: Пользователи Сообщений: 652 Пол: Мужской Реальное имя: Алексей Репутация: 20 |
Если сравнивать напрямую даты,то долго и нудно проверять все условия, начиная с годов,вы начните, покажите свои идеи,а мы поможем.
|
Федосеев Павел |
Сообщение
#3
|
Знаток Группа: Пользователи Сообщений: 481 Пол: Мужской Реальное имя: Федосеев Павел Репутация: 9 |
Можно дату представить в виде одного числа, формируемого примерно так:
Прошу прощения, конечно же (Date1-Date2) div 10000 Сообщение отредактировано: Федосеев Павел - |
sheka |
Сообщение
#4
|
Я. Группа: Пользователи Сообщений: 809 Пол: Мужской Реальное имя: Саша Репутация: 11 |
Цитата (Date1-Date2) div 10000 Это не правильное условие проверки. Шаришь почему? Как минимум потому, что (Показать/Скрыть)
|
Федосеев Павел |
Сообщение
#5
|
Знаток Группа: Пользователи Сообщений: 481 Пол: Мужской Реальное имя: Федосеев Павел Репутация: 9 |
Цитата Это не правильное условие проверки. Шаришь почему? Как минимум потому, что все твое решение сводится к простому с-z. По-правде говоря, не понимаю. Объясни или покажи пример когда это выражение превратится в глупость... |
sheka |
Сообщение
#6
|
Я. Группа: Пользователи Сообщений: 809 Пол: Мужской Реальное имя: Саша Репутация: 11 |
Да, что-то я протупил, прошу прощения
|
klem4 |
Сообщение
#7
|
Perl. Just code it! Группа: Пользователи Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: 44 |
Цитата(Федосеев Павел) Объясни или покажи пример когда это выражение превратится в глупость... Я например совершенно не понял, откуда ты взял константы 1,100 и 10000. Потом даннное решение, что-то мне подсказывает, совершенно не учитывает тот факт, что в году может быть не только 365 дней. Автору Воспользуйся поиском, задача решалась неоднократно. Задачи связанные с календарем. можеш посмотреть вот это решение. Сообщение отредактировано: klem4 - -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
Федосеев Павел |
Сообщение
#8
|
Знаток Группа: Пользователи Сообщений: 481 Пол: Мужской Реальное имя: Федосеев Павел Репутация: 9 |
Константы 1, 100 и 10000 взяты из соображения получить из даты 01 февраля 2012 года число 20120201.
Вне зависимости от числа дней в году от 02 марта 2012 до 01 марта 2013 пройдет менее 1 года (20130301-20120302=9999 < 10000), тоже самое и для пары дат 02 марта 2011 - 01 марта 2012 (20120301-20110302=9999 < 10000). Конечно, любому нужно ознакомиться с юлианскими датами и получением количества дней между ними (при программировании сенсорных панелей BrainChild эти алгоритмы меня сильно выручили), но эта задача гораздо проще и должна решаться проще. К тому же, знание, что между датами прошло 365 дней - пустое без знания високосности и расположения даты относительно 1 марта. Dixi Сообщение отредактировано: Федосеев Павел - |
klem4 |
Сообщение
#9
|
Perl. Just code it! Группа: Пользователи Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: 44 |
Соглашусь с вами. Мне по крайней пока не удалось придумать входные данные, на которых данное решение выдало бы неверный ответ.
-------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
Текстовая версия | 11.01.2025 9:28 |