Loading...
massbless avatar massbless 5 Точки

[Technical Issue] Programming Basics - 2. Simple Calculations

Здравейте!

При работата над задачките предложени в курса се сблъсках със следните проблеми:

 1) Методът Math.Round() не ми дава желания резултат. Например в задача, която иска да се изчисли площта на геометрична фигура, след като придам стойност на променливата "area" и след това въведа:

Math.Round(area, 2);

Console.WriteLine(area);

...резултатът, който се появавя в конзолата съдържа повече от 2 цифри след десетичната запетая. Judge системата приема решението на задачата като вярно, но това не ме успокоява особено :). Къде греша?

  2) Задачата, в която трябва да изведем дата 1000 дни след въведена рождена дата, ми дава разминаване от един (!) ден. Не мога да разбера дали от мен се очаква да използвам AddDays(999) вместо AddDays(1000) (което не ми се струва никак логично!) или проблемът възниква при конвертирането на входния стринг в DateTime променлива (обект?):

            DateTime birth_date = DateTime.ParseExact(input_date, format, CultureInfo.InvariantCulture);

Когато изведох DateTime промеливата в конзолата, забелязах, че освен MM/dd/yyyy в края се добавя и част за часа от деня - дали е възможно от там да идва разминаването? Ще съм много благодарен, ако някой даде малко светлина по въпроса :)

И да се извиня предварително ако въпросите ми са глупави или използвам погрешна терминология - все още не са ми се подредили напълно нещата в главата от материала, който прочетох през изминалите 2 дни.

Тагове:
0
Programming Basics
butanfire avatar butanfire 32 Точки

Привет!

1) Ако е това което си мисля че ти трябва е - да зададеш колко знака след десетичната запетая да print-не. 
Console.WriteLine("{0:2}",area);  

2) В кръга на шегата може да е заради високосните :)
При всички данни ли ти се измества с 1 ден?
Ти лесно можеш да вземеш входният string и да създадеш нов DateTime ако мислиш че проблема е от parse-a (не би трябвало)

Примерно : DateTime myBirthDate = new DateTime(2016, 3, 28);

myBirthDate = myBirthDate.Add(1000);

Трябва да ти отпeчата 23.12.2018 - доказателство -> http://www.convertunits.com/dates/daysfromnow/1000

 

Воздрави,

Владо

1
Berchev avatar Berchev 56 Точки

Така няма да работи

Console.WriteLine("{0:2}",area); 

 

Трябва да е така

Console.WriteLine("{0:f2}",area);

 

2
massbless avatar massbless 5 Точки

Ами явно проблемът е в броя добавени дни. Програмата ми в настоящия ѝ вид (с AddDays(999)) връща 22.12.2018 при работа с днешната дата (28.04.2016 - да уточня, че току-що мина полунощ и се смени :)), така че с 1000 ще даде резултата от сайта, който ти линкна. За мен това означава, че според съставителите на задачата трябва да се добавят 999 дни, което не ми се струва логично, но няма да навлизам в семантики. Важното е, че кодът ми работи и това ме оставя доволен! Мерси за помощта!

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