Ile miesięcy zaczyna się od niedzieli
laki: Witam, mam problem z zadaniem z programowania, nie mam pomysłu
Napisz program, który policzy ile miesięcy zaczęło się od niedzieli dla zadanego zakresu dat
Program wczytuje 4 liczby reprezentujące początek i koniec zakresu:
• miesiac początkowy
• rok początkowy
• miesiąc końcowy
• rok końcowy
Przykład: podanie liczb “1 1900 5 2018” oznacza, że program ma przeanalizować okres od 1
stycznia 1900r. do 30 maja 2018.
Wskazówki:
• 1 stycznia 1900 to poniedziałek
• lata przestępne to lata które dzielą się przez 4, ale nie dzielą się przez 100, chyba że
dzielą
się przez 400
7 gru 12:17
Blee:
Mam rozumieć że 'najdalej' w przeszłość można sie cofnąć właśnie do 1 stycznia 1900 roku
7 gru 12:52
Blee:
1) zauważ, że jeżeli miesiąc X zaczyna się jakiegoś dnia, to następny będzie się zaczynał:
a) tego samego dnia, jeżeli X ma 28 dni
b) dzień później jeżeli X ma 29 dni
c) dwa dni później jeżeli X ma 30 dni
d) trzy dni później jeżeli X ma 31 dni
2) Dodatkowo można lekko przyśpieszysz wyszukiwanie okresu (o ile zawsze będziesz zaczynać od
tegoż stycznia 1900 roku) i zauważyć, że jeżeli rok X zaczynał się jakiegoś dnia to następny
rok zacznie się:
a) dzień później jeżeli X ma 365 dni
b) dwa dni później jeżeli X ma 366 dni
7 gru 12:57
laki: Chodzi mi najbardziej o to jak napisać tą część programu która będzie odpowiadać za to że
jak podam np od kwiecień 1950 roku do maj 2000 roku to uwzględni lata przestępne.
wiem jak sprawdzić czy dany rok jest przestępny.
I nie wiem jak sprawdzić czy który miesiąc akurat zaczyna się od niedzieli
7 gru 13:13
laki: 1 stycznia 1900 to tylko wskazówka że jest to poniedziałek
7 gru 13:14
Blee:
Wszystko zależy jak do tego chcesz podejść, jak bardzo chcesz się 'bawić' w optymalizowanie
czasu pracy programu.
Ja na przykład proponowałbym:
1) Zrobić miniprogramik który zliczy Ci ile niedziel wypada w roku przestępnym i
nieprzestępnym, dla danego dnia tygodnia dla 1 stycznia.
Wartości te tenże programik wpisuje do tabeli.
2) Właściwy program sprawdza ile pełnych roczników ma zadany okres.
Sprawdza jaki dzień przypada na pierwszy 1 stycznia w zadanym okresie (i zapamiętuje jaki to
dzień) i korzystając z tabeli + tego co napisałem w (2) o 12:57 zlicza występowanie niedziel w
pełnym latach.
3) Wyznaczyć musisz jeszcze tylko liczbę niedziele 'na początku' i 'na końcu' okresu (czyli
niepełne lata).
I te robisz osobnym algorytmem który będzie sprawdzał dzień rozpoczęcia się każdego kolejnego
miesiąca
7 gru 13:37
laki: O dziękuję za podpowiedzi
teraz postaram się to ogarnąć
7 gru 13:47