Loading...
cybera avatar cybera 1 Точки

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?

Тагове:
0
Programming Basics 11/10/2016 00:12:44
dakata avatar dakata 26 Точки

Входа трябва да е в формат "dd-MM-yyyy":

using System;
using System.Globalization;

class Program
    {
        static void Main(string[] args)
        {
            var days = Console.ReadLine();
            string format = "dd-MM-yyyy";

            DateTime day = DateTime.ParseExact(days, format, CultureInfo.InvariantCulture);
            day = day.AddDays(1000 - 1);
            Console.WriteLine("{0:dd-MM-yyyy}", day);
        }
    }

 

0
cybera avatar cybera 1 Точки

Да благодарско, усетих се за това в един момент.

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.