[C#] Classes Objects Задача 1


6

 

[ Classes And Objects Задача 1 ]

Write a program that reads a year from the console and checks whether it is a leap. Use DateTime.
 
 
- Използваме DateTime.IsLeap();
- проверявам в msdn, че изисква да приеме аргумент от тип int
- виждаме, че връща bool стойност true или false
- стандартно принтиране
 

 




Отговори



9

Решение: source.

Направил съм метод, който проверява дали дадена година е високосна. Това е така, ако годината е кратна 4, но не и на 100 или е кратна на 400.

Пример:

  • 2000, 2400, 2012 - високосни
  • 2100, 2200, 2013 - не са високосни

от jasssonpet (6814 точки)


0
гласувах не защото кодът е кой знае какво, а защото ме светна за подробностите около високосните години ;d


0
Едва ли би те затруднил, но в условието пише "Use DateTime", това е така защото вероятно искат да се упражним с класовете и обектите.

от SVGN_H (3048 точки)


1

Решение:

http://pastebin.com/uSvDjrZG

Обяснение:

Използвам DateTime.Now за да взема днешната дата и после с .Year() си измъквам годината и я проверявам дали се дели на 4 без остатък - ако да, то тя е високосна.


от Teodor92 (13062 точки)


0
Тео, иска се да се въведе година от конзолата ;)

от plamen.yovchev (3283 точки)

0
Мхм не съм видял, но като цяло модификацията ще е съвсем малка :)

от Teodor92 (13062 точки)


1

Решение: http://pastebin.com/uwQbgk5g

Aз съм направил два варианта.

При първия взимам днешната година чрез DateTime, и чрез метода DateTime.isLeapYear провевявам дали сегашната година е четна.

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


от Mitko_Mitev (1276 точки)


3
Ето моето решение:
Console.WriteLine("Please enter year"); int Year = int.Parse(Console.ReadLine()); Console.WriteLine(DateTime.IsLeapYear(Year) ? "Year is leap": "Year is not leap");

от ipenev (1013 точки)


1

Код : http://pastebin.com/usQbAZHd

-Въвеждам година от конзолата, записвам я в променлива тип ushort, защото годината е положително число и не се очаква да е повече от обхвата на ushort.
- използвам
DateTime.IsLeapYear() , което проверява дали е вярно или не
-отпечатвам резултата


 


от son4etyyy (416 точки)


3

Според следния сайт високосните години са въведени в Юлианския календар през 46г пр.н.е. И поради грешка не на всеки 4, а на всеки 3 години се е добавяло един ден. Затова първите няколко високосни години са

45 BC, 42 BC, 39 BC, 36 BC, 33 BC, 30 BC, 27 BC, 24 BC, 21 BC, 18 BC, 15 BC, 12 BC, 9 BC, 8 AD

След това високосна е била всяка четвърта до 1582г., когато е въведен Грегорианският календар и е решено на всеки 400 години 97 да са високосни. Според това правило, ако годината се дели на 100, но не на 400 тя не е високосна. Така че моята логика е следната: Проверявам дали годината не е случайно в масива от начални високосни години

public static sbyte[] FirstLeapYears = { -45-42-39-36-33-30
-27-24-21-18-15-12-98 };

Ако не е, то проверявам дали се дели на 100 или 400, само ако е след 1699та, тъй като първата "различна" от правилото до тогава година е 1700. Според Юлиянския календар би била високосна, но според Грегорианския не е.

((year & 3) == 0) && (year < 1699 || (year % 100 != 0 || year % 400 == 0));


от Anubis_Black (1521 точки)


0
стана мнго оцърковно :)

от ludmil.d (490 точки)


0

моят вариант

доколкото разбирам от информацията за готовия метод за проверка DateTime.IsLeapYear Method входа може да се ограничи за числата от 1 до 9999.

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


от lmarkov (20 точки)


0

Решението е чрез дефиниране на клас Year. В съшия клас прaвя булев метод който проверява дали годината е високосна.

Решение: Pastebin


от stanev.plamen (1143 точки)


0
една булева също би била ОК:)

от ludmil.d (490 точки)


0

Ето я и моята, простичка задачка: 

https://github.com/CaptCortez/TelerikAcademyHomework-Classes/blob/master/IsLeapYear

Декларирам си една Bool променлива която приема стойността върната от DateTime.IsLeapYear(); и принтирам резултата на конзолата. То няма кой знае колко филосифия в това решение, но все пак :) 

Cheers!


от CaptCortez (1242 точки)


0
http://pastebin.com/JskAZkJB - проверявам за броя на дните в годината
ако са 365 - не е, ако са 366 е

от agentzero (0 точки)