Programming Basics - упражнения - 1000 Days After Birth
Условие:
Напишете програма, която въвежда рождена дата във формат “dd-MM-yyyy” и пресмята датата, на която се навършват 1000 дни от тази рождена дата и я отпечатва в същия формат.
вход |
изход |
25-02-1995 |
20-11-1997 |
07-11-2003 |
02-08-2006 |
30-12-2002 |
24-09-2005 |
01-01-2012 |
26-09-2014 |
14-06-1980 |
10-03-1983 |
* Подсказки: потърсете информация за типа DateTime в C# и по-конкретно разгледайте методите ParseExact(str, format), AddDays(count) и ToString(format). С тяхна помощ може да решите задачата, без да е необходимо да изчислявате дни, месеци и високосни години.
Моето решение:
var birth = DateTime.ParseExact(Console.ReadLine(), "dd/MM/yyyy", null);
var answer = birth.AddDays(1000);
Console.WriteLine("{0:dd-MM-yyyy}", answer);
Всички примерни тестове при мен излизат с отклонение 1 ден напред. Единственото обяснение което съм измислил е че по някаква причина не се вземат в предвид високосните години, обаче в MSDN-а пише изрично че add.days взема в предвид въпросните високосни години.
Когато кача решението в джъджа ми дава 5 броя (общо 5 са тестовете):
Unhandled Exception: System.FormatException: String was not recognized as a valid DateTime. at System.DateTimeParse.ParseExact(String s, String format, DateTimeFormatInfo dtfi, DateTimeStyles style) at _13._1000_Days_after_Birth.Program.Main(String[] args)
Някой може ли да отгатне какво недоразбирам за това как работи DateTime?
защо 999? ако си роден на 01.01.2000 г. на 02.01.2000 г ще си на 1 ден. Ако добавиш 999 дена няма да сметнеш кой ден ще е след 1000 дена, а кой ден ще е след 999, което не е условието на задачата. Друго яче казано 24 часа след раждането ти се навършва един ден не в момента в който си се родил. Смисъл ясно ми е че 999 ще докара верния резултат, ама не е това задачата :) ако смята правилно значи си мисля че някой е осрал отговорите.
Отделен въпрос, защо според тебе дава тея грешки, като пробвам решението в джъджа вместо да ми даде грешни отговори просто, както излизат при мен?
ЕДИТ: игнорирай 2рата част, разбрах че ясно този начин който съм ползвал за изписване не го приема в джъджа по някаква причина, въпреки че при мен излиза. Като го направих с toString излезнаха като грешни отговорите.
ЕДИТ2: тествах с 999 просто за чекчетата и по някаква причина все още дава грешка на тест 01-01-2012, няма нищо изписано от програмата ми.
Така изглежда преди последния тест на който минават 4/5 теста, но на 01-01-2012 не ми излизат никакви данни.
ЕДИТ: Това вече е смешно пуснах го пак същото и този път минаха 5/5
еднакъв код:
https://judge.softuni.bg/Contests/Submissions/View/1888317 - 5/5
https://judge.softuni.bg/Contests/Submissions/View/1888248 - 4/5
Оправих ти кода - http://pastebin.com/Sa9pu1FN Дава 100/100
По неправилен начин беше зададен входа, тъй като трябваше да го инициализираш в отделна променлива в началото още!
Ако имаш още въпроси питай!