Versions Compared

Key

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

Kodeforståelsesoppgaver

 

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.

Image Added

Lag et script som oppretter en passende datastruktur som inneholder disse dataene, og som lagrer den i en variabel.

Videoforklaring (5:45)

Widget Connector
urlhttps://www.youtube.com/watch?v=9pBNIZZm7EQ

Løsningsforslag

Expand
titleHvis du har prøvd selv, trykk her for å se svaret...
Code Block
titleopprett_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

...

Oppgavetekst

Code Block
 

Videoforklaring (mm:ss)

...

opprett_rundetider.m

Videoforklaring (10:56)

Widget Connector
urlhttps://www.youtube.com/watch?v=3Hcoon0nLwU

Løsningsforslag

Expand
titleHvis du har prøvd selv, trykk her for å se svaret...
Code Block
titleskriv_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
urlhttps://www.youtube.com/watch?v=t066qypOPgc

Løsningsforslag

Expand
titleHvis du har prøvd selv, trykk her for å se svaret...
Code Block
titlesammenlikn_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
urlhttps://www.youtube.com/watch?v=wXhwyUxQffQ

Løsningsforslag

Expand
titleHvis du har prøvd selv, trykk her for å se svaret...
Code Block
titleskriv_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
urlhttps://www.youtube.com/watch?v=8QJJhopqZAo

Løsningsforslag

Expand
titleHvis du har prøvd selv, trykk her for å se svaret...
Code Block
titleskriv_ut_vinner.m
function skriv_ut_vinner(rundetider)
    totaltider = sum(rundetider, 2);
    disp(find(totaltider == min(totaltider)));
end

Oppgave 2.2.6: Extra-spill

...

Del 1 (8:35)Del 2 (6:38)Del 3 (6:40)Del 4 (2:31)
Widget Connector
urlhttps://www.youtube.com/watch?v=sAp6myK9NOQ
Widget Connector
urlhttps://www.youtube.com/watch?v=_DtIm4Ic4L0
Widget Connector
urlhttps://www.youtube.com/watch?v=cxcUcjXlyj4
Widget Connector
urlhttps://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
titleHvis du har prøvd selv, trykk her for å se svaret...
Code Block
titleer_vinnerbrett.m
function retur = er_vinnerbrett(brett)
    retur = har_fylt_bilde(brett) || har_fylt_ramme(brett);
end
Code Block
titlehar_fylt_bilde.m
 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
titlehar_fylt_ramme.m
 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