Базовый курс. Решение ДЗ №3

Представляем решение третьего домашнего задания.

К сожалению, у Вас недостаточно прав для просмотра этой записи. Если Вы еще не залогинены на сайте
залогиньтесь.

Если не активировали токен — посмотрите видео-инструкцию (видео N5)

Если вы залогинены, у Вас активирован токен доступа, но вы все равно видите эту запись —
напишите нам на e-mail поддержки.

комментариев 15 на “Базовый курс. Решение ДЗ №3”

  1. eavechorek 03.02.2011 в 00:23

    “На коленке” – не всегда просто и красиво. Думала воспользоваться ДнемНедели, но не разобралась с до конца с примером в описании функции. Вывод – разработка алгоритмов и кодирование не терпит суеты :о))

  2. Для определения количество недель в году можно было воспользоваться функцией НеделяГода(КонецГода)

    • Да, это вариант, спасибо.

      • Эта функция возвращает номер недели, на указанную дату (КонецГода). Что в нашем случае помоему не то, что нам нужно. Так как для решения нашей задачи требуется количество целых недель, а если 31.12 попадает не на воскресенье (что в большинстве случаев именно так) то расчеты в этом случае будут отличаться от приведенных.
        (Или я не прав???)

        • Отчасти правы.
          Конструкция могла бы быть такой:

          КонецГода = КонецГода(Дата);
          ЦелыхНедель = НеделяГода(КонецГода)-?(ДеньНедели(КонецГода)<7, 1, 0);
  3. Чтобы не использовать циклы, разделил количество дней в году, на семь получил количество недель. На одну неделю два выходных 52*2=104выхд.
    Если год начинается с воскресенья, то нужно добавить  день (воскресенье);
    Если год заканчивается в воскресенья, то нужно добавить день суббота.

  4. Как ни странно, но в задании нет ни слова о создании структуры с выходными днями. Вместо этого имеется текст, с просьбой об обратной связи…

    • Структура будет в следующем задании :)

  5. Гуляев Алексей 28.01.2011 в 16:58

    Не подумал, что так можно посчитать количество рабочих дней.
    Я делал так, обходом всех дней и сравнивал с днем недели, и сравнивал с праздником.
    Вот только у меня вопрос, как к текущему дню прибавить 1 сутки?!
    Я делал так, КонецДня(ТекущийДень) + 1;

    • Гуляев Алексей 28.01.2011 в 17:17

      Можно конечно прибавлять, к суткам 24*60*60, но возможно ли обойтись без этого?

      • Вы привели оба возможных варианта :)

  6. Я задумывался и о таком решении, которое приведо в домашнем задании №3 базового курса…
    Не могли бы вы обьяснить, почему Необратонные дни берутся именно в начале года ? ….(логически понятно что брать надо не в середине….) а можно ли в конце? просто  логически не очевидно…что  необработанные дни надо брать с 1 января…

    • Ок, запишу отдельное видео на эту тему.

  7. Я немного ошибся при решении….
    Решение строил на подсчете сначала обычных выходных, потом учете праздников,
    потом отнимал от количества дней количество выходных и получал количество рабочих дней в году
    При расчете обычных выходных я думал так…
    надо взять количество недель в году…и все недели кроме первой и последней точно содержат по 7
    дней а значит по 2 выходных….
    и посчитал раз в году всегда 52 неделю плюс один или два дня (високосный год)
    то количество полных недель кроме первой и последней будет всегда 51…
    и Количество обычных выходных
    КолВыхГода=51*2+ВыхПерваяНеделя(Год)+ВыхПоследняяНеделя(Год);
    однако
    надо было так
    НедельвГоду=НеделяГода(Дата(Год,12,31));
    КолВыхГода=(НедельвГоду-2)*2+ВыхПерваяНеделя(Год)+ВыхПоследняяНеделя(Год);
    то есть количество полных недель (по 7 дней) в году может быть другим
    Например в 2012 году (високосный)… 54 недели…
    52 недели полных, и 2 недели по одному дню….

    • Есть логика еще проще.
      Я запишу отдельное видео и приложу его к решению ДЗ.