Софтуерно Инженерство
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