Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.09.2010, 18:20   #1
kuzmich
Форумчанин
 
Аватар для kuzmich
 
Регистрация: 05.05.2007
Сообщений: 236
Вопрос решение задачи

привет всем! помогите решить задачу!
условие:
Вычеслить номер дня недели на высокосном году. заданым числу и месяцу
тока массивы лучше не использовать
kuzmich вне форума Ответить с цитированием
Старый 14.09.2010, 19:57   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

А Вы думаете это такая элементарная задачка?
Согласно международному стандарту ISO-8601:
Цитата:
6.7. Что такое номер недели?

В международном стандарте ISO-8601 (упомянутом в разделе 6.6) каждой неделе года присваивается номер. Для недели, часть которой находится в одном году, а часть в другом, присваивается номер в том году, которому принадлежит большее количество дней. Это означает, что Неделя 1 каждого года включает 4 января,

или

В любом году неделя 1 - это неделя, которая включает первый четверг в январе.

В большинстве годов 52 недели, но в годах, которые начинаются в четверг, и в високосных годах, начинающихся в среду - 53 недели.
перевожу на русский - мало знать того, что год високосный, по правилам ещё нужно знать, какой день недели выпал на 1-е января.

Если же считать номер семидневки, тогда нужно брать вот эту функцию:
Код:
  function DaysInMonth(Month : integer) : Integer;
  begin
    case Month of
      1, 3, 5, 7, 8, 10, 12 :
        DaysInMonth := 31;
      4, 6, 9, 11 :
        DaysInMonth := 30;
      2 :
        DaysInMonth := 29;
    else
      DaysInMonth := 0;
    end;
  end;
и в цикле считать дни.
например, так (CurDay - введённый день, CurMonth - введённый месяц):
Код:
var i:byte;
    Result_sum_day:integer;
begin
  Result_sum_day:=0;
  for i:=1 to CurMonth - 1 do
      Result_sum_day:=Result_sum_day+DaysInMonth(i);

  Result_sum_day:=Result_sum_day+ CurDay;

...
  { номер СЕМИДНЕВКИ }
  if (Result_sum_day mod 7) = 0 then 
        WriteLn('Номер семидневки = ',Result_sum_day div 7)
  else
        WriteLn('Номер семидневки = ',(Result_sum_day div 7)+1);
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
решение задачи на c++ hay20 Фриланс 7 18.12.2009 00:03
Решение задачи на C# masicev Помощь студентам 1 15.10.2009 15:33
Решение задачи(( ==Terman== Microsoft Office Excel 7 10.05.2009 20:10
Решение задачи на C++ tools Фриланс 8 19.12.2008 14:53
решение задачи Claster Общие вопросы Delphi 17 16.09.2008 21:08