a)
Code Block | ||
---|---|---|
| ||
function name = getMonthName( month )
switch (month)
case 1
name = 'Januar';
case 2
name = 'Februar';
case 3
name = 'Mars';
case 4
name = 'April';
case 5
name = 'Mai';
case 6
name = 'Juni';
case 7
name = 'Juli';
case 8
name = 'August';
case 9
name = 'September';
case 10
name = 'Oktober';
case 11
name = 'November';
case 12
name = 'Desember';
otherwise
name = 'Ikke en gyldig maaned';
end
end |
b) Bare å kopiere fra oppgavebeskrivelsen.
c)
Her holder det at studenten skriver end de første 12 iterasjonene. Poenget er å vise forståelse for hva som skjer (hvordan variablene week, day og date) endres.
Iterasjon | week | day | date |
---|---|---|---|
1 | 1 | 1 | 0 |
2 | 1 | 2 | 0 |
3 | 1 | 3 | 1 |
4 | 1 | 4 | 2 |
5 | 1 | 5 | 3 |
6 | 1 | 6 | 4 |
7 | 1 | 7 | 5 |
8 | 2 | 1 | 6 |
9 | 2 | 2 | 7 |
10 | 2 | 3 | 8 |
11 | 2 | 4 | 9 |
12 | 2 | 5 | 10 |
13 | 2 | 6 | 11 |
14 | 2 | 7 | 12 |
15 | 3 | 1 | 13 |
16 | 3 | 2 | 14 |
17 | 3 | 3 | 15 |
18 | 3 | 4 | 16 |
19 | 3 | 5 | 17 |
20 | 3 | 6 | 18 |
21 | 3 | 7 | 19 |
22 | 4 | 1 | 20 |
23 | 4 | 2 | 21 |
24 | 4 | 3 | 22 |
25 | 4 | 4 | 23 |
26 | 4 | 5 | 24 |
27 | 4 | 6 | 25 |
28 | 4 | 7 | 26 |
29 | 5 | 1 | 27 |
30 | 5 | 2 | 28 |
31 | 5 | 3 | 29 |
32 | 5 | 4 | 30 |
33 | 5 | 5 | 31 |
34 | 5 | 6 | 0 |
35 | 5 | 7 | 0 |
36 | 6 | 1 | 0 |
37 | 6 | 2 | 0 |
38 | 6 | 3 | 0 |
39 | 6 | 4 | 0 |
40 | 6 | 5 | 0 |
41 | 6 | 6 | 0 |
42 | 6 | 7 | 0 |
d)
Code Block | ||
---|---|---|
| ||
function day = getYearStartDay ( year )
day = 1;
for i = 1900:( year -1)
if isLeapYear (i)
day = day + 2;
else
day = day + 1;
end
if day >= 8
day = day - 7;
end
end
end |
e)
Code Block | ||
---|---|---|
| ||
function day = getMonthStartDay ( year , month )
if month > 0 && month < 13
day = getYearStartDay ( year );
for i = 1 : month -1
day = day + daysInMonth (i , year);
end
while ( day > 7)
day = day - 7;
end
else
day = 0;
end
end |
f)
Code Block | ||
---|---|---|
| ||
function printDays ( days )
for week = 1:6
for day = 1:7
if days (week , day ) == 0
fprintf (' ');
else
if days (week , day ) < 10
fprintf (' ');
end
fprintf ('%d ', days (week , day ));
end
end
fprintf ('\n');
end
end |
g)
Code Block | ||
---|---|---|
| ||
function printCalendar ( year , month )
monthName = getMonthName ( month );
days = getCalendar ( year , month );
fprintf (' %s %d\n', monthName , year );
fprintf ('ma ti on to fr lo so\n');
printDays ( days );
end |
h)
Nye funksjoner:
Code Block | ||
---|---|---|
| ||
function weekNumber = getWeekNumber(year, month, day)
daysSoFar = day;
for i = 1 : month-1
daysSoFar = daysSoFar + daysInMonth(i, year);
end
dayOfWeek = mod(getMonthStartDay(year, month) + day - 1, 7);
if dayOfWeek == 0
dayOfWeek = 7;
end
weekNumber = floor((daysSoFar - dayOfWeek + 10) / 7);
if weekNumber < 1
weekNumber = getWeekNumber(year - 1, 12, 31);
end
end |
Endrede funksjoner:
Code Block | ||
---|---|---|
| ||
function printDays (days, month, year)
for week = 1:6
day = 1 + (week - 1) * 7;
weekNumber = getWeekNumber(year, month, day);
fprintf('%i\t', weekNumber);
for day = 1:7
if days (week , day ) == 0
fprintf (' ');
else
if days(week, day) < 10
fprintf (' ')
end
fprintf ('%d ', days (week , day ));
end
end
fprintf ('\n');
end
endend |
Code Block | ||
---|---|---|
| ||
function printCalendar ( year , month )
monthName = getMonthName ( month );
days = getCalendar ( year , month );
fprintf ('\t%s %d\n', monthName , year );
fprintf ('Uke\tma ti on to fr lo so\n');
printDays (days, month, year);
end
|