Innhold:
Enkle oppgaver
Dette delkapitlet inneholder oppgaver som sannsynligvis er for enkle til å komme med i nye eksamenssett.
Absoluttverdi (4%)
Absoluttverdien til et tall er alltid et positivt tall: |a| = a dersom a>0 og |a|= -a dersom a<0. Lag en funksjon absoluttverdi(a)
som returnerer absoluttverdien til parameter a
.
[Hovedeksamen 2003] LF
Oppgaver med plotting
Tredjegradsligning (4%)
Gitt tredjegradsligningen f(x) = -x3 + 7x -5, definert for x ∈ [-10,25]. Vis hvordan du vil tegne opp f(x) i en Matlab-graf for det angitte intervallet i x.
[Hovedeksamen 2003 (redigert)] LF
Sortert liste (5%)
a) Anta du har gitt en liste (en-dimensjonal tabell) av verdier Y
. Vis hvordan du kan bruke den innebygde funksjonen sort
til å sortere Y
i stigende rekkefølge.
b) Vis hvordan du kan bruke funksjonen plot
, slik at hver verdi i Y
plottes med et inkrement på 0.1 langs x-aksen. Altså går Y(1)
på 0.1, Y(2)
på 0.2, Y(3)
på 0.3 og så videre.
[Kontinuasjonseksamen 2003 (redigert)] LF
Oppgaver med løkker
Glatting (8%)
Lag en funksjon glatting(Y)
som returnerer en tabell Z
hvor tabellplass Z(i)
skal være gjennomsnittsverdien av Y(i-1)
, Y(i)
og Y(i+1)
. La endepunktene Z(1)
og Z(N)
være likY(1)
og Y(N)
der N=length(Y)
.
[Hovedeksamen 2003] LF
Nedbør Værnes (13%)
Du har fått en datafil med daglige målinger av nedbør fra Værnes værstasjon. Lag en funksjon som tar en en-dimensjonal tabell X med målinger for alle dagene i et år som innargument (parameter), og returnerer et histogram (en tabell) med den totale nedbøren for hver måned i hvert element. Anta for enkelhets skyld at året har 360 dager, og at det er 30 dager i hver måned. Du skal altså lage en funksjon som returnerer en tabell med tolv elementer, hvor hvert element representerer den totale nedbøren i den angitte måneden. Implementer funksjonen nedbor
.
[Kontinuasjonseksamen 2003 (redigert)] LF
SumVektor (4%)
Lag en funksjon sumVektor
som tar en vektor av desimaltall som parameter og returnerer summen av tallene i denne vektoren. Ikke bruk den «innebygde» funksjonen sum
.
Red.anm.: vektor ≡ liste ≡ en-dimensjonal tabell.
[Hovedeksamen 2004] LF
antPositive (3.75%)
Lag en funksjon antPositive
som tar inn en en-dimensjonal tabell (liste) med desimaltall som parameter, og returnerer antallet positive tall i tabellen som et heltall. Verdien 0.0 regnes som positiv.
[Kontinuasjonseksamen 2004 (redigert)] LF
GangerekkeFor (3.75%)
Lag en funksjon som genererer de 10 første tallene i gangerekka for et gitt tall. De 10 første tallene i gangerekka for tallet 4 er feks:
4 8 12 16 20 24 28 32 36 40
Funksjonen skal hete gangerekkeFor
. Denne skal ta inn tallet som skal ganges, som parameter, og gi ut den tilsvarende gangerekka som funksjonsverdi.
[Kontinuasjonseksamen 2004]
Nok øvinger (3%)
Anta du har en liste med 11 verdier, hvor 1. verdi inneholder 1 (sann) hvis du har fått øving 1 godkjent, 0 (usann) hvis du ikke har fått den godkjent og tilsvarende for 2. verdi og oppover så langt du har kommet med øvingsopplegget.
Skriv en funksjon nokovinger
som returnerer sann hvis du har gjort nok øvinger for å gå opp til eksamen i ITGK 2006, og usann ellers. Husk at du må ha 8 av 11 godkjent, og en av de to auditorieøvingene (nr. 4 og 10) må være blant de godkjente. Du kan bruke ei løkke eller den innebygde funksjonen sum
.
[Kontinuasjonseksamen 2004 (redigert)] LF
Hoyeste (4%)
Gitt følgende funksjon for å finne indeksen til det største heltallet i en en-dimensjonal tabell
function svar = hoyeste(tabell) x = 0; y = 0; for i = 1:length(tabell) if (tabell(i) >= x) x = tabell(i); y = i; end end svar = y; end
Gi et eksempel på en tabell hvor denne funksjonen returnerer feil svar.
[Hovedeksamen 2005]
Sum2 (4%)
Lag en funksjon sum2
som tar inn to like store en-dimensjonale tabeller A og B av heltall. Funksjonen skal inneholde ei løkke som gjør elementvis sum av A og B og returnerer svaret i en tabell C.
Oppgaven skal besvares uten å bruke innebygde funksjoner sum, max og min.
[Hovedeksamen 2005] LF
Tippekupong (4%)
Skriv en funksjon tippekupong
som returnerer 12 tilfeldige tippetegn 'H'
, 'U'
eller 'B'
i en tabell. Du kan bruke ceil(3*rand)
for å lage ett tilfeldig heltall x ∈ {1, 2, 3}. Her er programsetninger som kaller funksjonen og skriver ut resultatet:
tabell = tippekupong(); for i = 1:length(tabell) disp([num2str(i) '.' tabell(i)]); end
[Hovedeksamen 2005] LF
Indresum (5%)
Lag en funksjon indresum
som summerer alle elementene i de indre radene og kolonnene i en tabell med m
rader og n
kolonner. Det vil si at radene langs kantene ikke skal være med.
[Kontinuasjonseksamen 2005] LF
Bytt2 (5%)
Gitt følgende funksjon for parvis å bytte om to og to tall i en en-dimensjonal tabell A
.
function A = bytt2(A) n = length(A); for i = 1:2:n A(i) = A(i+1); A(i+1) = A(i); end end
Det er to klassiske programmeringsfeil i bytt2
, forklar hvilke.
[Kontinuasjonseksamen 2005] LF
Pascal (10%)
Lag en funksjon pascal
som tar inn ei liste av heltall og returnerer ei liste hvor hvert element er summen av to naboelementer i inngangslista. I tillegg skal du sette inn ett element med verdi 1 først og ett element med verdi 1 til slutt. Merk at returlista blir ett element lenger enn inngangslista.
Eksempel: inngangsdata [2 3 4]
gir resultat [1 5 7 1]
.
[Kontinuasjonseksamen 2005] LF
Trizero (15%)
Skriv en funksjon trizero
som tar inn en tabell A
med like mange rader som kolonner og et flagg (logisk variabel) upper
. Hvis upper == true
skal alle elementene over hoveddiagonalen nullstilles og hvis upper == false
skal alle elementene under hoveddiagonalen nullstilles. Resten av elementene skal beholde sin opprinnelige verdi. Hele tabellen skal returneres etter nullstilling av de angitte elementer. Returner en tom tabell hvis antall rader ikke er lik antall kolonner i inngangstabellen A
. Se figur.
[Hovedeksamen 2008] LF
Oppgaver med tracing
Bruk av ceil (2%)
Hva skriver skriptet nedenfor ut på skjermen når det kjøres ?
% ceil(x) returnerer x rundet opp til nærmeste heltall svar = 0; for i = 1 : 5 svar = ceil( (svar + i) / 2 ); end disp(svar);
[Hovedeksamen 2003]
Bruk av mod (2%)
Hva blir partall([ 1 0 ]) ?
function antall = partall(tabell) i = length(tabell); antall = 0; % mod(x,y) gir rest ved heltallsdivisjonen x/y while (i > 0 && mod(tabell(i), 2) == 0) antall = antall + 1; i = i - 1; end end
[Hovedeksamen 2003]
Dobbel for-løkke (4%)
Hva blir skrevet ut til skjermen når disse programsetningene kjøres ?
z = 0; for x = 1:5 for y = x:10 z = z + 1; end end disp(z);
[Hovedeksamen 2005]
Dobbel for-løkke II (5%)
Hva blir skrevet ut til skjermen når disse programsetningene kjøres ?
z = 0; for x = 1:4 for y = x:2*x z = z + 1; end end disp(z);
[Kontinuasjonseksamen 2005]
Mystery (10%)
Hva returnerer kallet mystery(1,5)
?
function L = mystery(seed, count) if (count < 1) L = []; return; end L(1) = seed; for i = 2:count L(i) = seed*(seed+1); seed = L(i); end end
[Hovedeksamen 2008]