Loading...
PetarJekov97 avatar PetarJekov97 7 Точки

Домашно - 1000 Days After Birth!

Това е кода който успях да направя . Работи , като напиша дата ми смята 1000 дена след това , но ми дава грешка в judge системата . Ако някой може да помогне или да даде съвет .. ? :)

http://pastebin.com/Cv3xV3tt

Тагове:
0
Programming Basics 23/01/2016 13:51:15
r3v3nan7 avatar r3v3nan7 365 Точки

И аз я реших, но по по-различен начин и на мен ми гръмна в judge, въпреки че примерите от word файла ми излязоха всички, точно така както са написани. И аз не знам какъв е проблемът. Даде ми едва 20 точки 

0
Filkolev avatar Filkolev 4482 Точки

Вероятно при парсването на датата се получават проблеми. Това, което е най-сигурно да се ползва, когато се знае точният формат, в който се подава датата, е DateTime.ParseExact() метода. Разгледай го как работи; би трябвало да ти свърши работа.

1
djivanp avatar djivanp 6 Точки

Ето и моето решение което във VS си работи ,  но в judge също гърми !

 

using System;

class Class1
{
    public static void Main()

    {
        DateTime today = DateTime.Now; 
        DateTime date = System.DateTime.Parse(Console.ReadLine()); 
        DateTime result = date.AddDays(1000);
        Console.WriteLine("{0:dd-MM-yyyy}" , result); 

 

Може ли някой да ми помогне да разбера защо гърми в judje-а , понеже също съм онлайн и немога да разбера къде бъркам . Благодаря Ви предварително!

    }

}

0
24/01/2016 19:21:59
Plotso avatar Plotso 24 Точки

Трябва да се добавят 999 дена,а не 1000 ! :)

0
LiardaZZ avatar LiardaZZ 26 Точки

Мисля,че трябва да промениш от 1000 на 999 дни.

0
IttyBitty avatar IttyBitty 27 Точки

Подобно е на твоето, но в judge не става. Едва 20/100. Някакви идеи защо? 

 

using System;

namespace _1000_days_after_birth
{
    class Program
    {
        static void Main(string[] args)
        {            
            DateTime date = DateTime.Parse(Console.ReadLine());
            DateTime result = date.AddDays(999);
            Console.WriteLine("{0:dd-MM-yyyy}", result);
        }
    }
}

0
31/10/2016 00:43:58
raging avatar raging 92 Точки

В док файла има подсказки как се решава, защо не ги ползвате ?

-3
PetarJekov97 avatar PetarJekov97 7 Точки

* Подсказки: потърсете информация за типа DateTime в C# и по-конкретно разгледайте методите ParseExact(str, format), AddDays(count) и ToString(format). С тяхна помощ може да решите задачата, без да е необходимо да изчислявате дни, месеци и високосни години.

 

Подсказката е пак "задача" да си намерим сами кодовете , понеже съм записан в онлайн обучението , ми е доста по-трудно . Поразрових се в гугъл и stack overflow , но освен още въпроси , аз отговор не намерих . Ако някой може да ми каже какво точно да напиша след ParseExact .. пробвах няколко варианта , като например : DateTime.ParseExact("25-02-1995", "M'/'d'/'yyyy", null);  /    DateTime.TryParseExact("12122008", "ddMMyyyy", null, System.Globalization.DateTimeStyles.None, out dt);  .  Дава ми няколко грешки , като една от тях , разликата от моя отговор с верния отговор е 1 ден , има грешка с разлика от 4 месеца и тн. Моля за по-обширен и обяснен отговор , все пак съм нов в програмирането . 

Поздрави !

1
Filkolev avatar Filkolev 4482 Точки

Подсказките са много на място, дори ясно са казани методите, които трябва да се ползват. В MSDN, където е официалната документация, обикновено има достатъчно информация и примери. Ако не ти се чете самата документация може да разгледаш само примерите: ЛИНК

Понякога е по-добре да се чете документацията, защото в StackOverflow пишат хора с конкретни проблеми, които търсят конкретни отговори, а не питат общи неща като как да ползват ParseExact метода. Това обикновено са хора, които са чели документацията, и не са намерили решение на казуса си.

Доколкото виждам си близо до истината, с примерите в MSDN би трябвало да се справиш със задачата. Добър вариант е да ползваш дебъгера. Така може да видиш на всяка стъпка какво се случва - първо да видиш дали парсваш правилно датата, след това дали правилно добавяш дни. Проблемът най-вероятно е в първата стъпка, във вградения метод за добавяне на дни няма какво да се обърка.

1
raging avatar raging 92 Точки

http://www.dotnetperls.com/datetime-parse
към края ще видиш какво му трябва на кратко : 

очаква стринг който искаш да Parsnesh,

по какъв начин (в нашия случай "dd-MM-yyyy")

и културе инфо : https://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo(v=vs.110).aspx

2
luki_strike avatar luki_strike 9 Точки

Ето моето решение. Работи в judge системата. Само неразбрах прибавянето на дните ми даваше грешка. Разминаваха се с 1 ден и затова ги намалих. Онлайн се обучавам и подсказките са полезни много. Иска се малко ровене за да намериш отговорите. Лошото беше че отговирите ги намирах в кодове от https://msdn.microsoft.com/en-us/library/w2sa9yss(v=vs.110).aspx

using System;

class ThousandDayAfter
{
    static void Main()
    {
        string ftm = "dd-MM-yyyy";
        string value = Console.ReadLine();
        DateTime userBirthday = DateTime.ParseExact(value, ftm, null);
        Console.WriteLine(userBirthday.AddDays(999).ToString("dd-MM-yyyy"));
    }
}

1
r3v3nan7 avatar r3v3nan7 365 Точки

Да и при мен се разминаваха с един ден, но това е поправимо. Само не разбрах кое му е лошото, че си намерил отговорите в msdn ? 

То нали това е целта. В смисъл като не знаеш нещо търсиш информация в google. Msdn е библиотеката на майкрософт и там много неща са 

описани добре и подробно. Направено е да видиш наистина как работят нещата, докато при stack overflow повече се търси за специфичен проблем. 

Така че аз не виждам нищо лошо, че си намерил отговори в msdn. И аз намирам много неща там.

0
luki_strike avatar luki_strike 9 Точки

Лощото е че трябва да следиш много подробно кода, особено когато не си специалист по английски език. Иначе с другото се справям.

0
r3v3nan7 avatar r3v3nan7 365 Точки

Ами няма как приятелю. В смисъл , че английският е доста важен и вече дори се смята като даденост. 

Дори в обявите за работа примерно няма да видиш , че се изисква английски. Той се подразбира, че 

трябва да  знаеш поне на ниво, с което да се оправяш. Поне така си мисля. Но пък при желание винаги може да се понаучи и той :)

0
yasen6275 avatar yasen6275 18 Точки

След осъждането на ParseExact дали не е редно да коментираме защо judge-a проверява за 999 дни след дата на раждане, а не 1000, както е в условието?

1
pebodi avatar pebodi 29 Точки

Всеки брояч бърка с единица!

Паулу Куелю!

 

surprise

1
brucee avatar brucee 0 Точки

0,1,2,3,4,5,6,7,8,9 = 10.

0
Yonko_n avatar Yonko_n 11 Точки

Ето го моето решение и работи в judge.Дано помогне, на който се нуждае:

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Globalization;

namespace ThousandDays
{
    class ThousandDays
    {
        static void Main(string[] args)
        {
            string dateString = Console.ReadLine();
            string format= "dd-MM-yyyy";
            DateTime result=DateTime.ParseExact(dateString, format, CultureInfo.InvariantCulture);
            CultureInfo provider = CultureInfo.InvariantCulture;
            DateTime output = Convert.ToDateTime(result).AddDays(999);

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

        }
    }
}

 

0
gvanastasov avatar gvanastasov 52 Точки

1000 дни след въведаната дата във формат dd-MM-yyyy (забележи - не си въвел час) започва от 12:00:00АМ тоест на следващият ден. Представи си го като една линия, и показалеца ти е забит на датата ама накрая й. Добави 1000 дни, и ще се телепортираш в същия този ден 1000 дни след това, но 1001 вече започнал. Това е моето лично обяснение на пръв поглед, но не съм го проверявал ;)

-4
RoYaL avatar RoYaL Trainer 6849 Точки

What? :)

Т.е. ако добавиш един ден, ще се телепортираш на следващия ден, но в 12:00 АМ демек на по-следващия ден, т.е. 2 дни по-късно? :) Is that true?

Пробвай с AddDays(1). При вход 20-01-2015 връща 21-01-2015. Ако те разбирам правилно очакваме да върне 22ри? :)

1
yasen6275 avatar yasen6275 18 Точки

Моята логика е подобна. Ако днес се навършват х дни от рождението ми утре ще се навършват х+1. Понеже 1 ден се навършва на деня след рождения ми ден => 1000 са точно +1000, а не +999 или +1001 или +1002.

0
27/01/2016 23:25:07
petar.dimitrov.86 avatar petar.dimitrov.86 450 Точки

ей, браво, много стегнат код, моя се получи нещо такова, само че вместо CultureInfo provider = CultureInfo.InvariantCulture; написах var provider = new CultureInfo("bg-BG"); което не знам всъщност каква роля играе, тъй като и без това формата е зададен от format. И за да изчистиш повече кода, може да махнеш на последния ред placeholder-а {0}  и да си остане само date.ToString(format)

0
Yonko_n avatar Yonko_n 11 Точки

Колеги:

Говорихме си и пак си говорихме.После пак си говорихме и т.н. :)))

А в условието пише от въведената дата.Затова с 1000 не излиза правилен отговор.Едно е самата въведена дата.

Измислих го :))))

 

0
IvoFC avatar IvoFC 3 Точки

Аз го реших така : http://pastebin.com/f2Vmhykj

Мисля, че е доста оптимално.

2
gvanastasov avatar gvanastasov 52 Точки

Някъде по-горе съм драснал моето обяснение (колапснато е в стак с коментари), и според мен просто дадените отговри са грешни, или заданието е непълно. Това е моето обяснение.

0
bpavlov123bp avatar bpavlov123bp 6 Точки

 Не съм си мислил, че може да бъде толкова кратко, но вземайки предвид подсказките и търсене в Google, се получи следният код.http://pastebin.com/pRpvVkmn

0
netherblood avatar netherblood 95 Точки

 

            Console.Write("Press any key to continue . . . ");
            Console.ReadKey(true);

Не разбирам защо пишеш  този код в края на задачата, ако не знаеш, с Ctrl-F5 ти изпълнява програмата и не затваря конзолата.
Когато сложиш тоя код в judge, гърми.

Ето го и моето решение на един ред
 

using System;
using System.Globalization;

class _1000DaysAfterBirth
{
    static void Main()
    {
        Console.WriteLine(DateTime.ParseExact(Console.ReadLine(), "dd-MM-yyyy", CultureInfo.InvariantCulture).AddDays(999).ToString("dd-MM-yyyy"));
    }
}


 

0
smehurko avatar smehurko 1 Точки

ей това успях да направя и работи, извинявам се ако спамя излишно

 

using System;
using System.Globalization;


namespace _1000DaysAfterBirth
{
    class Program
    {
        static void Main(string[] args)
        {
            string DateString = Console.ReadLine();
            string format="dd-MM-yyyy";
            DateTime result = DateTime.ParseExact(DateString, format,CultureInfo.InvariantCulture);

            DateTime answer = result.AddDays(999);
            
            Console.WriteLine( answer.ToString(format));
        }
    }
}

1
dakata avatar dakata 26 Точки

За да не гърми кода в Judge при включен Console.ReadKey() последния може да се "загради" по следният начин:

#if DEBUG
            Console.ReadKey(true);
#endif

 

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