Софтуерно Инженерство
Loading...
+ Нов въпрос
PetarJekov97 avatar PetarJekov97 7 Точки

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

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

http://pastebin.com/Cv3xV3tt

Тагове:
0
Основи на програмирането 23/01/2016 13:51:15
r3v3nan7 avatar r3v3nan7 365 Точки

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

0
Filkolev avatar Filkolev 4499 Точки

Вероятно при парсването на датата се получават проблеми. Това, което е най-сигурно да се ползва, когато се знае точният формат, в който се подава датата, е 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 26 Точки

Подобно е на твоето, но в 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 4499 Точки

Подсказките са много на място, дори ясно са казани методите, които трябва да се ползват. В 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 SoftUni Team Trainer 6845 Точки

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