Помощь - Поиск - Пользователи - Календарь
Полная версия: Записи, задача про день рождения
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Clerick
Народ выручайте кто может!!!
Необходимо решить следущую задачу: составить прогу, которая выводит те года, в которых день рождения совпадает с "истинным" днем (т.е. тот, когда родился человек). Период времени +50 и -50 лет от текущей даты. Вот такая задача. mega_chok.gif

Большая просьба - помогите!!! Буду очень признателен!!! yes2.gif yes2.gif yes2.gif
klem4
перебераешь все нужные года и смотришь, если день рождения попадает на нужный день, выводишь год ... Посмотри, вот модуль для работы с календарем
Clerick
Цитата(klem4 @ 25.02.2006 15:59) *

перебераешь все нужные года и смотришь, если день рождения попадает на нужный день, выводишь год ... Посмотри, вот модуль для работы с календарем



А без перебора никак??? blink.gif
volvo
Что значит "Без перебора"? blink.gif Сразу вывести ВСЕ совпадающие года? Нет...

Кстати, это фактически не перебор, а цикл:
For Year := CurrYear - 50 To CurrYear + 50 Do
  {
    Проверить, совпадает ли день недели определенной даты
    с днем недели этого же числа в ТЕКУЩЕМ году
  }
Clerick
Извиняюсь про "без перебора", ошибся, не то хотел сказать. А насчет цикла тут есть "засада":учитывая что наличие високосных годов даты слишком круто "скачут". Я никак не могу их учесть. blink.gif
volvo
Да тебе и не надо учитывать! В модуле это уже учтено:
uses calenfun; { Тебе же дали ссылку на этот модуль }

const
  curr_year = 2006;
var
  birth, other: tdate;
  birth_day: byte;
  year: integer;

begin
  with birth do begin
    d := 4; m := 5; y := 1971;
  end;
  birth_day := dayofweek(birth, grigorian);

  for year := curr_year - 50 to curr_year + 50 do begin
    other := birth;
    other.y := year;
    if dayofweek(other, grigorian) = birth_day then writeln(year);
  end;
end.
Только что проверил на своем дне рождения - все работает...
Clerick
Все сдаюсь... wacko.gif Нельзя ли все прогу сразу??? Буду очень признателен!!! good.gif good.gif good.gif
volvo
Я тебе привел программу полностью... Сходи по ссылке, которую дал klem4, скачай модуль calenfun, и присоедини его к программе...
Clerick
Ну тогда все!!! Огромное спасибо!!! Пошел набивать!!! 1.gif 1.gif 1.gif
volvo
Вот в следующий раз ТЫ будешь сначала приводить свою программу, а потом тебе будут отвечать, ЯСНО? Совсем совесть потеряли - лень даже ПОПРОБОВАТЬ, прежде, чем что-то запостить, а даешь готовое решение - так еще и это не проверяют...

mad.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.