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

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

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

 
 Ответить  Открыть новую тему 
> простецкая задача, а решить не решу ..)
сообщение
Сообщение #1





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

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


Даны две тройки чисел a,b,c и x,y,z. (число, месяц, год). Определить количество полных лет, прошедших между этими датами.

помогите, пожалуйста

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


Профи
****

Группа: Пользователи
Сообщений: 652
Пол: Мужской
Реальное имя: Алексей

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


Если сравнивать напрямую даты,то долго и нудно проверять все условия, начиная с годов,вы начните, покажите свои идеи,а мы поможем.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Знаток
****

Группа: Пользователи
Сообщений: 481
Пол: Мужской
Реальное имя: Федосеев Павел

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


Можно дату представить в виде одного числа, формируемого примерно так:

VAR
Date1, Date2 : LongInt;
.............
Date1:=a+100*b+10000*c;
Date2:=x+100*y+10000*z;
предоложим, что Date1>=Date2 (ну или проверим if)
WriteLn('Число полных лет: ', (Date1-Date2):10000);
..............

Прошу прощения, конечно же (Date1-Date2) div 10000

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


Я.
****

Группа: Пользователи
Сообщений: 809
Пол: Мужской
Реальное имя: Саша

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


Цитата
(Date1-Date2) div 10000

Это не правильное условие проверки. Шаришь почему?
Как минимум потому, что (Показать/Скрыть)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Знаток
****

Группа: Пользователи
Сообщений: 481
Пол: Мужской
Реальное имя: Федосеев Павел

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


Цитата
Это не правильное условие проверки. Шаришь почему?
Как минимум потому, что все твое решение сводится к простому с-z.


По-правде говоря, не понимаю. Объясни или покажи пример когда это выражение превратится в глупость...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Я.
****

Группа: Пользователи
Сообщений: 809
Пол: Мужской
Реальное имя: Саша

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


Да, что-то я протупил, прошу прощения smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

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


Цитата(Федосеев Павел)
Объясни или покажи пример когда это выражение превратится в глупость...

Я например совершенно не понял, откуда ты взял константы 1,100 и 10000. Потом даннное решение, что-то мне подсказывает, совершенно не учитывает тот факт, что в году может быть не только 365 дней.

Автору
Воспользуйся поиском, задача решалась неоднократно.
Задачи связанные с календарем. можеш посмотреть вот это решение.

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


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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

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


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

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


Соглашусь с вами. Мне по крайней пока не удалось придумать входные данные, на которых данное решение выдало бы неверный ответ.


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





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