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

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

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

комментариев 18 на “Решение ДЗ №3 Базового курса”

  1. Учу учу ребенка. Сделал дело, отчитался и гуляй спокойно.
    А сам…….
    Стыдно.

    Сделал.

  2. Harley Davidson 17.08.2010 в 11:11

    Задание выполнено!

  3. Сделано, буду догонять.

  4. Людмила Фролова 10.08.2010 в 09:15

    Догоняю, тороплюсь, поэтому выполнила с подглядыванием. Узнала про НПП, интересно.

  5. Оркия Барташевич 16.07.2010 в 16:24

    Конечно, уже поздно, но выполнила честно. Потом посмотрела эталон.
    Предполагала, что в задании описка и посчитала выходные дни.

  6. Сергей Профьев 12.07.2010 в 20:54

    учитывая предыдущие статейки на тему целесообразности оптимизации, реализовал расчет простым перебором дней…
    Хотя, безусловно, расчет через количество недель лучше.

  7. Анатолий Белогорцев 07.07.2010 в 19:29

    Не поленился сделать замеры производительности своего решения и эталонного.
    Получилось явно не в пользу полного перебора дней (0,29 с против 0,18 с),
    причем во втором случае более 99% времени заняло выполнение функция Сообщить().

    • но в настоящих разработках – это не приемлимо издеваться над товарищем, да и над самим собой – попробуй быстро откорректировать через пару лет :) А вот производительность компьютеров за пару лет – однозначно вырастит :) Это я так, мысли в слух…

  8. Здравствуйте. В одном из рассматриваемых способов получить количество дней в году, допущена ошибка.

    Если из конца года вычитать начало года Количества Секунд в Году, он не покажет.

    Дата(Год, 12, 31) - Дата(Год, 1, 1)  ; // нехватает Суток

    Не будет хватать суток. Так как нужно брать конец последнего дня за минусом начало первого (по умолчанию). Примерно так:

    Дата(КонецДня(Год, 12, 31)) - Дата(Год, 1, 1)  ;// нехватает секунды

    Но и в этом случае у нас недостанет одной секунды.

    Лучше делать так:
    Из начала следующего года вычтем начало текущего

    Дата(Год+1, 1, 1) - Дата(Год, 1, 1) ;// Получилось
  9. Евгений Ершов 06.07.2010 в 23:23

    Оригинальная мысль, что надо проверять при поиске выходных один (для обычного) или два (для високосного года) первых дня в январе. И этого достаточно (конец декабря не проверяем). Т.е. первая неделя января и последняя неделя декабря как бы друг друга дополняют.
    В part02 (8:55) вы немного оговорились, что функция возвращает 1-если день является рабочим, 0-не рабочим (на самом деле наоборот). И функцию наверное надо было назвать “НеРабочийДень”. Ну это не принципиально.
    В целом спасибо!

    • Нет, все правильно.
      Идея в заключается в следующем: если праздник выпадает на рабочий день, то количество рабочих дней нужно уменьшить.

    • Сергей Коцюра 01.08.2010 в 05:40

      > Оригинальная мысль, что надо проверять при поиске выходных один (для обычного) или два (для високосного года) первых дня в январе.
      – над рассмотрением решения сидел и парил мозг именно в этой части. Такой “оригинальный подход” – кардинальное зло, особенно при разработке бизнес-приложений – с ходжу – не поймешь, да и со второго захода тоже не сразу… Такой оригинальный подход, наверное, надо применять только там, где стоит жесткие требования к быстродействию… ну или специально если обфусцировать надо;-)

  10. Александр Горлов 06.07.2010 в 23:13

    Жаль, что символ неразрывного пробела удаляется только одним столь “грубым” способом… Неплохо было бы осветить еще и работу функции Формат() !
    Более того, измени пользователь системные настройки ОС – и весь алгоритм по замене столь мешающего символа будет коту под хвост!

  11. Чудо НЕ вышло..

  12. СтрЗаменить() давным давно (8.0) тоже так и делал :), только Символы.НПП я тогда вообще не знал (и не мог их найти), поэтому грубо пошел: СтрЗаменить(“Год”+Год,Символ(160),””); :) Но кто с этими функциями незнаком – очень полезно :) Спасибо!

    • Чтобы не было символа НПП, я в своих отчетах использую Формат(), например для года: Формат(ТекущаяДата(),”ДФ=yyyy”)=”2010″