Kodeforståelsesoppgaver (total videotid: 57:11)
Kodeoppgaver (total videotid: 1:13:43)
Alle oppgavene på en side
Oppgavevideoer uke 37 - alle oppgaver
Kodeforståelsesoppgaver (total videotid: 57:11)
Oppgave 2.1.1: Matriser og vektorer
Hva skrives ut hvis vi kjører det følgende scriptet?
Code Block |
---|
|
[1, 2, 3]
[1; 2; 3]
[1, 2, 3; 4, 5, 6]
[1, 2, 3; 4, 5, 6]'
size(1:3)
size((1:3)') |
Videoforklaring (8:15)
Widget Connector |
---|
url | https://www.youtube.com/watch?v=cVha17mZ_KE |
---|
|
Svar
Expand |
---|
title | Hvis du har prøvd selv, trykk her for å se svaret... |
---|
|
Code Block |
---|
ans =
1 2 3
ans =
1
2
3
ans =
1 2 3
4 5 6
ans =
1 4
2 5
3 6
ans =
1 3
ans =
3 1 |
|
Oppgave 2.1.2: Posisjonsindeksering
Hvilken verdi har M etter at vi kjører dette scriptet?
Code Block |
---|
|
M = [1, 2, 3, 4; 5, 6, 7, 8; 9, 10, 11, 12];
M(1,2) = 5;
M(end,end) = 90;
M([1,2], 1) = M([2, 3], 1);
M(:,[3, 2]) = M(:, [2, 3]);
M(1:end,:) = M - 1; |
Videoforklaring (10:57)
Widget Connector |
---|
url | https://www.youtube.com/watch?v=mcobItbGRVo |
---|
|
Svar
Expand |
---|
title | Hvis du har prøvd selv, trykk her for å se svaret... |
---|
|
Code Block |
---|
M =
4 2 4 3
8 6 5 7
8 10 9 89 |
|
Oppgave 2.1.3: Logisk indeksering
Hva skrives ut hvis vi kjører det følgende scriptet?
Code Block |
---|
|
x = 1:5
x([true,false, true, false, true])
x(true)
x > 3
x(ans)
mod(x,2)
mod(x,2) == 0
x < 2 | x >= 4 & mod(x, 2) == 0
x(x < 2 | x >= 4 & mod(x, 2) == 0) |
Videoforklaring (14:44)
Widget Connector |
---|
url | https://www.youtube.com/watch?v=j7YPR5CcpsY |
---|
|
Svar
Expand |
---|
title | Hvis du har prøvd selv, trykk her for å se svaret... |
---|
|
Code Block |
---|
x =
1 2 3 4 5
ans =
1 3 5
ans =
1
ans =
0 0 0 1 1
ans =
4 5
ans =
1 0 1 0 1
ans =
0 1 0 1 0
ans =
1 0 0 1 0
ans =
1 4 |
|
Oppgave 2.1.4: Forskjell Forskjell på true/false og 0/1
Hva skrives ut hvis vi kjører det følgende scriptet?
Code Block |
---|
|
1 + 1
true + true
0 + 0
false + false
x = 1:5
x([true, true, true, true, true])
x([1, 1, 1, 1, 1])
x([false, false, false, false, false])
x([0, 0, 0, 0, 0]) |
Videoforklaring (7:53)
Widget Connector |
---|
url | https://www.youtube.com/watch?v=wLjUza6dF60 |
---|
|
Svar
Expand |
---|
title | Hvis du har prøvd selv, trykk her for å se svaret... |
---|
|
Code Block |
---|
ans =
2
ans =
2
ans =
0
ans =
0
x =
1 2 3 4 5
ans =
1 2 3 4 5
ans =
1 1 1 1 1
ans =
Empty matrix: 1-by-0
Subscript indices must either be real positive integers or logicals.
Error in oppgave_4 (line 10)
x([0, 0, 0, 0, 0]) |
|
Oppgave 2.1.5: Posisjonsindeksering
Hva skrives ut hvis vi kjører det følgende scriptet?
Code Block |
---|
|
alfabet = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', ...
'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'];
disp(alfabet([13, 1, 20, 12, 1, 2, 5, 18, 11, 10, 5, 13, 16, 5, 11, 21, 12, 20])); |
Videoforklaring (4:20)
Widget Connector |
---|
url | https://www.youtube.com/watch?v=pldkXIKA90U |
---|
|
Svar
Expand |
---|
title | Hvis du har prøvd selv, trykk her for å se svaret... |
---|
|
Code Block |
---|
matlaberkjempekult |
|
Oppgave 2.1.6: Matriseoperasjoner
Hva skrives ut hvis vi kjører det følgende scriptet?
Code Block |
---|
|
A = [ 1, 2; 3, 4 ];
A .* A
A * A
A ./ A
A / A
A .^ 2
A ^ 2 |
Videoforklaring (11:02)
Widget Connector |
---|
url | https://www.youtube.com/watch?v=BeeqqpVOC9c |
---|
|
Svar
Expand |
---|
title | Hvis du har prøvd selv, trykk her for å se svaret... |
---|
|
Code Block |
---|
ans =
1 4
9 16
ans =
7 10
15 22
ans =
1 1
1 1
ans =
1 0
0 1
ans =
1 4
9 16
ans =
7 10
15 22 |
|
Kodeoppgaver (total videotid: 1:13:43)
Oppgave 2.2.1: Matrise som datastruktur
Vi skal lage et program for å ta vare på rundetidene i et skøyteløp, og analysere de etterpå. Vi har fått oppgitt følgende eksempeldata til bruk under utvikling.
![](/wiki/download/attachments/94938952/rundetider.PNG?version=1&modificationDate=1471331903000&api=v2)
Lag et script som oppretter en passende datastruktur som inneholder disse dataene, og som lagrer den i en variabel.
Videoforklaring (5:45)
Widget Connector |
---|
url | https://www.youtube.com/watch?v=9pBNIZZm7EQ |
---|
|
Løsningsforslag
Expand |
---|
title | Hvis du har prøvd selv, trykk her for å se svaret... |
---|
|
Code Block |
---|
title | opprett_rundetider.m |
---|
| rundetider = [ 25, 29, 31, 30;
25, 31, 29, 29;
24, 28, 32, 33 ]; |
|
Oppgave 2.2.2: Posisjonsindeksering
Vi ønsker å kunne få statistikk for løpet til en spesifikk utøver. Lag en funksjon som lar brukeren skrive inn et utøvernummer, og som skriver ut alle rundetidene til den utøveren. Skriv også ut den raskeste rundetiden til den utøveren.
Utdelt kode
Script for å lage testdata: opprett_rundetider.m
Videoforklaring (10:56)
Widget Connector |
---|
url | https://www.youtube.com/watch?v=3Hcoon0nLwU |
---|
|
Løsningsforslag
Expand |
---|
title | Hvis du har prøvd selv, trykk her for å se svaret... |
---|
|
Code Block |
---|
title | skriv_ut_loeperstat.m |
---|
| function skriv_ut_loeperstat(rundetider)
loepernr = input('Skriv inn løpernummer: ');
loepertider = rundetider(loepernr, :);
disp(loepertider);
disp(min(loepertider));
end |
|
Oppgave 2.2.3: Logisk indeksering
Vi ønsker å kunne sammenlikne løpet til to utøvere. Lag en funksjon som lar brukeren skrive inn to utøvernummer, og som skriver ut rundenumrene og rundetidene der den første utøveren var raskere enn den andre.
Utdelt kode
Script for å lage testdata: opprett_rundetider.m
Videoforklaring (12:31)
Widget Connector |
---|
url | https://www.youtube.com/watch?v=t066qypOPgc |
---|
|
Løsningsforslag
Expand |
---|
title | Hvis du har prøvd selv, trykk her for å se svaret... |
---|
|
Code Block |
---|
title | sammenlikn_loepere.m |
---|
| function sammenlikn_loepere(rundetider)
loeper1 = input('Skriv inn nummeret til første løper: ');
loeper2 = input('Skriv inn nummeret til andre løper: ');
loepertid1 = rundetider(loeper1, :);
loepertid2 = rundetider(loeper2, :);
er_raskere = loepertid1 < loepertid2;
raskeste_tider = loepertid1(er_raskere);
disp(raskeste_tider),
raskeste_rundenr = find(er_raskere);
disp(raskeste_rundenr);
end |
|
Oppgave 2.2.4: Mer indeksering
Vi ønsker å kunne analysere resultatene i en bestemt runde. Lag en funksjon som ber brukeren skrive inn et rundenummer, og som skriver ut den rundens rundetider hvor tiden var høyere enn gjennomsnittet i den runden.
Utdelt kode
Script for å lage testdata: opprett_rundetider.m
Videoforklaring (7:25)
Widget Connector |
---|
url | https://www.youtube.com/watch?v=wXhwyUxQffQ |
---|
|
Løsningsforslag
Expand |
---|
title | Hvis du har prøvd selv, trykk her for å se svaret... |
---|
|
Code Block |
---|
title | skriv_ut_tider_over_rundesnitt |
---|
| function skriv_ut_tider_over_rundesnitt(rundetider)
rundenr = input('Skriv inn et rundenummer: ');
tider = rundetider(:, rundenr);
snitt = mean(tider);
er_over_snitt = tider > snitt;
tider_over_snitt = rundetider(er_over_snitt, rundenr);
disp(tider_over_snitt);
end |
|
Oppgave 2.2.5: Innebygde funksjoner og matriser
Vi ønsker å finne den utøveren som vant løpet. Lag en funksjon for å skrive ut utøvernummeret til den utøveren som hadde laveste totale løpstid.
Utdelt kode
Script for å lage testdata: opprett_rundetider.m
Videoforklaring (12:42)
Widget Connector |
---|
url | https://www.youtube.com/watch?v=8QJJhopqZAo |
---|
|
Løsningsforslag
Expand |
---|
title | Hvis du har prøvd selv, trykk her for å se svaret... |
---|
|
Code Block |
---|
| function skriv_ut_vinner(rundetider)
totaltider = sum(rundetider, 2);
disp(find(totaltider == min(totaltider)));
end |
|
I tippingsspillet Extra leverer tippingsspillet Extra leverer spillere et 5 x 5-brett med unike tall mellom 1 og 75. Det trekkes så 47 unike tall mellom 1 og 75. Man kan vinne en premie med tre forskjellige kriterier:
- Hvis man fyller det innerste 9x9-området av brettet, kalt bilde.
- Hvis man fyller ytterkanten av brettet, kalt ramme.
- Hvis man fyller hele brettet.
Et eksempelbrett er avbildet under.
Image Modified
Vi skal lage en simulator av dette spillet i Matlabi Matlab, for å analysere våre vinnersjanser. Vi har funnet ut at vi kan representere et resultat-brett som en 5x5 matrise med logiske verdier, hvor en posisjon har verdien true hvis det tilsvarende Extraverdien true hvis det tilsvarende Extra-brettet hadde en verdi der som ble trukket og false ellersog false ellers.
Lag en funksjon som tar inn et slikt Extraslikt Extra-brett, og som returnerer true hvis brettet er et vinnerbrett og et vinnerbrett og false hvis det ikke er det.
Videoforklaring
Del 1 (8:35) | Del 2 (6:38) | Del 3 (6:40) | Del 4 (2:31) |
---|
Widget Connector |
---|
url | https://www.youtube.com/watch?v=sAp6myK9NOQ |
---|
|
| Widget Connector |
---|
url | https://www.youtube.com/watch?v=_DtIm4Ic4L0 |
---|
|
| Widget Connector |
---|
url | https://www.youtube.com/watch?v=cxcUcjXlyj4 |
---|
|
| Widget Connector |
---|
url | https://www.youtube.com/watch?v=yMKretVpSsE |
---|
|
|
Utdelt kode
Dette scriptet lager noen variabler som inneholder eksempelbrett man kan teste løsningen sin med.
opprett_testbrett.m
Løsningsforslag
Expand |
---|
title | Hvis du har prøvd selv, trykk her for å se svaret... |
---|
|
Code Block |
---|
| function retur = er_vinnerbrett(brett)
retur = har_fylt_bilde(brett) || har_fylt_ramme(brett);
end |
Code Block |
---|
| function retur = har_fylt_bilde(brett)
bilde = brett(2:4, 2:4);
kol_har_bare_true = all(bilde);
retur = all(kol_har_bare_true);
end |
Code Block |
---|
| function retur = har_fylt_ramme(brett)
rad1 = brett(1, :);
rad5 = brett(5, :);
kol1 = brett(:, 1);
kol5 = brett(:, 5);
retur = all(rad1) && all(rad5) && all(kol1) && all(kol5);
end |
|