Решение ДЗ №3 Базового курса
Представляем решение третьего домашнего задания.
К сожалению, у Вас недостаточно прав для просмотра этой записи. Если Вы еще не залогинены на сайте — залогиньтесь. Если Вы оплачивали курс, у Вас активирован токен доступа, Вы залогинены, но Вы видите эту запись — напишите нам на e-mail поддержки.
Учу учу ребенка. Сделал дело, отчитался и гуляй спокойно.
А сам…….
Стыдно.
Сделал.
Задание выполнено!
Сделано, буду догонять.
Догоняю, тороплюсь, поэтому выполнила с подглядыванием. Узнала про НПП, интересно.
Конечно, уже поздно, но выполнила честно. Потом посмотрела эталон.
Предполагала, что в задании описка и посчитала выходные дни.
Это не так страшно :)
учитывая предыдущие статейки на тему целесообразности оптимизации, реализовал расчет простым перебором дней…
Хотя, безусловно, расчет через количество недель лучше.
Не поленился сделать замеры производительности своего решения и эталонного.
Получилось явно не в пользу полного перебора дней (0,29 с против 0,18 с),
причем во втором случае более 99% времени заняло выполнение функция Сообщить().
но в настоящих разработках – это не приемлимо издеваться над товарищем, да и над самим собой – попробуй быстро откорректировать через пару лет :) А вот производительность компьютеров за пару лет – однозначно вырастит :) Это я так, мысли в слух…
Здравствуйте. В одном из рассматриваемых способов получить количество дней в году, допущена ошибка.
Если из конца года вычитать начало года Количества Секунд в Году, он не покажет.
Не будет хватать суток. Так как нужно брать конец последнего дня за минусом начало первого (по умолчанию). Примерно так:
Но и в этом случае у нас недостанет одной секунды.
Лучше делать так:
Из начала следующего года вычтем начало текущего
Оригинальная мысль, что надо проверять при поиске выходных один (для обычного) или два (для високосного года) первых дня в январе. И этого достаточно (конец декабря не проверяем). Т.е. первая неделя января и последняя неделя декабря как бы друг друга дополняют.
В part02 (8:55) вы немного оговорились, что функция возвращает 1-если день является рабочим, 0-не рабочим (на самом деле наоборот). И функцию наверное надо было назвать “НеРабочийДень”. Ну это не принципиально.
В целом спасибо!
Нет, все правильно.
Идея в заключается в следующем: если праздник выпадает на рабочий день, то количество рабочих дней нужно уменьшить.
> Оригинальная мысль, что надо проверять при поиске выходных один (для обычного) или два (для високосного года) первых дня в январе.
– над рассмотрением решения сидел и парил мозг именно в этой части. Такой “оригинальный подход” – кардинальное зло, особенно при разработке бизнес-приложений – с ходжу – не поймешь, да и со второго захода тоже не сразу… Такой оригинальный подход, наверное, надо применять только там, где стоит жесткие требования к быстродействию… ну или специально если обфусцировать надо;-)
Жаль, что символ неразрывного пробела удаляется только одним столь “грубым” способом… Неплохо было бы осветить еще и работу функции Формат() !
Более того, измени пользователь системные настройки ОС – и весь алгоритм по замене столь мешающего символа будет коту под хвост!
Чудо НЕ вышло..
Должно было? )
СтрЗаменить() давным давно (8.0) тоже так и делал :), только Символы.НПП я тогда вообще не знал (и не мог их найти), поэтому грубо пошел: СтрЗаменить(“Год”+Год,Символ(160),””); :) Но кто с этими функциями незнаком – очень полезно :) Спасибо!
Чтобы не было символа НПП, я в своих отчетах использую Формат(), например для года: Формат(ТекущаяДата(),”ДФ=yyyy”)=”2010″