Софтуерно Инженерство
Loading...
nick.genov avatar nick.genov 103 Точки

Домашно за методи - задача 10. DateModifier

Здравейте.

Някой успя ли да получи 100 точки на задача 10 - DateModifier от домашното за методи?

https://judge.softuni.bg/Contests/222/Methods

Решението ми получава 57 точки, а виждам, че и доста други колеги са получили толкова. Пробвах два варианта за изчисляване на разликата - с TimeSpan и с изваждане на датите. Не виждам какво може да се обърка.

Това е решението ми:

http://pastebin.com/PCgQ7w0g


Идеи?

Тагове:
0
C# OOP Basics
jicata avatar jicata Trainer 7 Точки

Здрасти.

10та задача е малко по-специална от другите поради факта, че се върти около DateTime. Датите и времето като цяло са малко проблематични концепции не само в програмирането и е много лесно да се получат разминавания. Сигурно сте забелязали, че първия zero test не минава съвсем, докато пък втория минава без засечка. Причините за това са редица като на пример разминаването на в календарите които се ползват. Дифолтния календар в .NET  е вързан към дифолтната култура и изглежда това резултира в ползване на Грегорианския което съотвено създава проблеми при пресмятане на дати които са преди въвеждането на Грегорианския а и дори след това. Като цяло е манджа с грозде що опре до дати. За повече инфо може да зачетете ето този пост от блога на Jon Skeet относно аритметика свързана с дати

Иначе конкретно за задачката, тестовете са проблема, не решенията ви. Мислехме да ги оправим още като видяхме проблема но така и не го направихме тогава, което е наша грешка. Вече тестовете са оправени (т.е датите които ползваме са по-близки една до друга и същеременно до днешната) и всичко трябва да е ОК.

TL;DR

DateTime е пипкава работа. Решенията ви не са грешни. Тестовете бяха объркани, вече са оправени. Ретест за 100/100.

 

Cheers

1
08/07/2016 18:04:05