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
jivako000 avatar jivako000 296 Точки

Здравей!

Когато задаваш дните, не трябва да пишеш след 1000, а след 999!

Това е моето решение: http://pastebin.com/rNNSzLWd

А мога ли да погледна целия ти код?

Успех!smiley

0
10/10/2016 17:51:03
cybera avatar cybera 1 Точки

защо 999? ако си роден на 01.01.2000 г. на 02.01.2000 г ще си на 1 ден. Ако добавиш 999 дена няма да сметнеш кой ден ще е след 1000 дена, а кой ден ще е след 999, което не е условието на задачата. Друго яче казано 24 часа след раждането ти се навършва един ден не в момента в който си се родил. Смисъл ясно ми е че 999 ще докара верния резултат, ама не е това задачата :) ако смята правилно значи си мисля че някой е осрал отговорите.

Отделен въпрос, защо според тебе дава тея грешки, като пробвам решението в джъджа вместо да ми даде грешни отговори просто, както излизат при мен?

ЕДИТ: игнорирай 2рата част, разбрах че ясно този начин който съм ползвал за изписване не го приема в джъджа по някаква причина, въпреки че при мен излиза. Като го направих с toString излезнаха като грешни отговорите.

ЕДИТ2: тествах с 999 просто за чекчетата и по някаква причина все още дава грешка на тест 01-01-2012, няма нищо изписано от програмата ми.

0
10/10/2016 17:57:02
cybera avatar cybera 1 Точки
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _13._1000_Days_after_Birth
{
    class Program
    {
        static void Main(string[] args)
        {
            var birth = DateTime.ParseExact(Console.ReadLine(), "dd-MM-yyyy", null);

            var answer = birth.AddDays(999);

            Console.WriteLine(answer.ToString("dd-MM-yyyy"));
        }
    }
}

Така изглежда преди последния тест на който минават 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

0
10/10/2016 18:11:38
jivako000 avatar jivako000 296 Точки

Оправих ти кода - http://pastebin.com/Sa9pu1FN Дава 100/100

По неправилен начин беше зададен входа, тъй като трябваше да го инициализираш в отделна променлива в началото още!

Ако имаш още въпроси питай! smiley

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