skip to Main Content

Jak można przy użyciu programu odpowiedzieć na pytanie: Ile dni upłynęło od początku roku?

Odkopałem swój post na forum roku informatyki i stwierdziłem że jest warty podzielenia się ze wszystkimi.
Przypomnę że treść zadania

Napisać program który po podaniu daty podaje ile dni upłynęło od początku roku do podanej daty włącznie. Rok przestępny jeżeli dzieli się przez 4 i nie dzieli się przez 100 lub dzieli się przez 400.

Kod w języku C:

Loading ….

Reszta postu będzie się odnościć tylko do jednej funkcji a mianowicie get_month_days.

Najpierw sprawdzana jest sytuacja z lutym, ponieważ on zależy od roku.
Funkcja posiada w sobie liczbę bez znaku o nazwie magic_number która jest zapisana w postaci szesnastkowej. Ale najważniejsze jest jej rozwinięcie binarne, które wygląda tak:
101011010101

Gdzie miejsce jedynek odpowiada który miesiąc posiadający 31 dni (styczeń to pierwszy z prawej)
Linjka:
magic_number = magic_number >> (month -1);

powoduje przesunięcie cyfr w prawo, aby ‚miesiąc’ był przesunięty na pierwszej pozycji z prawej.
if(magic_number & 1)

Sprawdza czy w liczbie po przesunięciu na pozycji najbardziej z prawej znajduje się 1. Jeżeli tak to 31 jeżeli nie to 30

Mam nadzieje że kogoś może ‘zainspirowałem’ do podchodzenie do problemów programistycznych inaczej niż najprostsza ścieżka.

Paweł Sołtysiak

Programista, domowy kucharz i "amator amerykańskiej polityki".
Zbieram informacje z całej sieci, po odrzuceniu chwastów i dodaniu swojej opinii publikuje na blogu.

Back To Top