Versions Compared

Key

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

...

  1. Månedsnavn og årstall. Første rad.
  2. Dagsnavn. Andre rad.
  3. Datoer for alle dager på riktig plass. Tredje til syvende rad. 

a) 

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

Code Block
languagenone
>> getMonthName(7)
ans = 
	'Juli'

b)

Andre rad er en enkel iterasjon gjennom en liste av navn på dagene. De siste radene er mer bry: Disse utgjør en 6x7 matrise hvor radene er uker og kolonnene er ukedager. Denne matrisen kan se slik ut: 

...

Code Block
languagenone
function calendar = getCalendar ( year , month )
	startDay = getMonthStartDay ( year , month );
	numDays = daysInMonth ( month , year );
	calendar = zeros ( 6, 7 );
	date = 0;
	for week = 1:6
		for day = 1:7
			if ( date == 0 )
				if ( week == 1 && day == startDay )
					date = 1;
				end
			else
				if ( date < numDays )
					date = date + 1;
				else
					date = 0;
				end
			end
			calendar (week , day ) = date ;
		end
	end
end

...

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

Legg inn funksjonen getCalendar. Her kan du bare kopiere fra koden over.                                                                                                                                                                

c)

Gitt startDay = 3 og numDays 31 i getCalendar-funksjonen over. 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
...

%fyll inn

12 

1
1
...

%

1
2
...

%

0
0
...

%

10 

 

 

Legg inn funksjonen getCalendar (se over). Denne krever at vi implementerer funksjonene daysInMonth og getMonthStartDay.                                                                                                                                                                    

Du kan bruke filene daysInMonth.m og isLeapYear.m fra tidligere øvinger. 

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

cd)

 Lag funksjonen getYearStartDay(year). 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 returnere 1
getYearStartDay (1901) % skal returnere 2
getYearStartDay (1902) % skal returnere 3
getYearStartDay (1903) % skal returnere 4
getYearStartDay (1904) % skal returnere 5
getYearStartDay (1905) % skal returnere 7
getYearStartDay (1906) % skal returnere 1
getYearStartDay (2012) % skal returnere 7


de) 

Lag funksjonen getMonthStartDay(year, monthNumber). 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). 

...

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

efLag funksjonen printDays(month). Den skal ta inn en matrise med datoer som parameter, og printe disse ut som vist under. Denne funksjonen skal ikke returnere noen verdi. Funksjonshodet kan dermed se slik ut:

Code Block
languagenone
function printDays ( month )
	% Din kode
end
 
Eksempel på kjøring:
 
>> printDays(month)
 
       1  2  3  4  5
 6  7  8  9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31

fg) Lag funksjonen printCalendar(year, monthNumber). Parameterene er år og månedsnummer. Den benytter seg av getMonthName og getCalendar og printer ut de to første linjene av kalenderen før den kaller på printDays. Den skal ikke returnere noe, bare vise utskrift. 

...