Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  • Kap 4.1-4.4
  • Kap 3.3.2
  • Kap 3.7
  • Kap 5.4

Implementer funksjonen printCalendar. Den skal vise en gyldig månedskalender gitt månednummer og år som parameter. 
Om koden kjøres skal det se omtrent slik ut:

...

a) Månedsnummer må gjøres om til månedsnavn. Lag funksjonen getMonthNamefunksjonen getMonthName(nr) som returnerer navnet på måneden gitt månedsnr. 

...

Her returnerer funksjonen daysInMonth antall dager i måned, getMonthStartDay returnerer nummeret på den første ukedagen i måneden (1 = Mandag, 2 = Tirsdag, ..., 7 = Søndag). I eksempelet med oktober 2014, returnerer daysInMonth 31 og getMonthStartDay 3.


b)

Gitt startDay = 7 og numDays 30. Gå gjennom funksjonen over og skriv ned verdien til variablene week, day og date for hver iterasjon i den indre for løkken. 

Iterasjonweekdaydate

1
2
...
12 

1
...
...
... 
1
...
...
... 
0
...
...
... 

 

...

 

Legg inn funksjonen getCalendar (se vedlegg). Denne krever daysInMonth og getMonthStartDay, se tidligere i øvingen. Skuddår må være med i beregningene. Du kan bruke filene daysInMonth.m og isLeapYear.m . 

For å kunne definere funksjonen getMonthStartDay trenger vi først å vite hvilken dag året starter på.

c) Lag funksjonen getYearStartDay. Funksjonen skal ta inn et årstall som parameter og returnere hvilken ukedag året starter på (1 = Mandag, 2 = Tirsdag, ..., 7 = Søndag). 
Tips: Året 1900 startet på en mandag. For hvert år flytter startdagen seg med en dag. Det vil si at 1901 startet på en tirsdag. Hvis året er et skuddår, flytter startdagen i neste år seg med to dager.

...

Code Block
languagenone
getYearStartDay (1900) % skal skrive ut 1
getYearStartDay (1901) % skal skrive ut 2
getYearStartDay (1902) % skal skrive ut 3
getYearStartDay (1903) % skal skrive ut 4
getYearStartDay (1904) % skal skrive ut 5
getYearStartDay (1905) % skal skrive ut 7
getYearStartDay (1906) % skal skrive ut 1
getYearStartDay (2012) % skal skrive ut 7


d) Lag funksjonen getMonthStartDay. Den skal ta inn et årstall og et månedsnummer som parameter (1 = Januar, 2 = Februar, ..., 12 = Desember). Funksjonen skal returnere hvilken ukedag måneden starter på (1 = Mandag, 2 = Tirsdag, ..., 7 = Søndag). 

...

Du har hittil brutt kalenderen ned i mindre funksjoner. Nå skal de settes sammen og en kalender skal vises. 
disp() er for enkel, derfor må fprintf() benyttes.  Se fprintf for  for bruk. 

Å vise matrisedelene av kalenderen bør være en egen funksjon.

...