Versions Compared

Key

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

...

Expand
titleHvis du har prøvd selv, trykk her for å se svaret...
 Nei, koden er vektorisert og produserer hele resultatlisten på en gang. Preallokering er bare nødvendig hvis vi produserer ett og ett element av gangen i en selvskrevet løkke.

Kodeoppgaver

Oppgave 5.2.1:

...

 

Utdelt kode

...

Samlet Fahrenheitoversikt

Du har tidligere laget et script som konverterer Celsius-verdier en bruker skriver inn fortløpende til Fahrenheit. For at utskriften fra scriptet skal bli mer oversiktlig, ønsker du å samle all utskriften i stedet for at den kommer fortløpende.

Endre scriptet slik at utskriften kommer først etter at brukeren har skrevet inn alle Celsius-verdiene.  Konverteringene skal også skrives ut i rekkefølge etter stigende Celsius-verdi.

Utdelt kode

Expand
titlefahrenheit.m
Code Block
titlefahrenheit.m
svar = input('Ønsker du å skrive inn egne Celsius-verdier? (ja/nei) ', 's');
if strcmp(svar, 'ja')
    celsius = les_inn_tall('Skriv inn Celsius-verdi: ');
    while ~isempty(celsius)
        skriv_ut_fahr(celsius);
        celsius = les_inn_tall('Skriv inn Celsius-verdi: ');
    end
else
    skriv_ut_fahr(-20);
    skriv_ut_fahr(0);
    skriv_ut_fahr(18);
    skriv_ut_fahr(37);
    skriv_ut_fahr(100);
end 
Expand
titleles_inn_tall.m
Code Block
titleles_inn_tall.m
function retur = les_inn_tall(melding)
    tallstr = input(melding, 's');
    tall = str2double(tallstr);
    er_ugyldig = isnan(tall);
    while er_ugyldig && ~isempty(tallstr)
        fprintf('Teksten %s kan ikke tolkes som et tall\n', tallstr);
        tallstr = input(melding, 's');
        tall = str2double(tallstr);
        er_ugyldig = isnan(tall);
    end
    if isempty(tallstr)
        retur = [];
    else
        retur = tall;
    end
end 
Expand
titleskriv_ut_fahr.m
Code Block
titleskriv_ut_fahr.m
function skriv_ut_fahr(celsius)
    fahr = cels2fahr(celsius);
    fprintf('Celsiusverdi %.2f tilsvarer Fahrenheitverdi %.2f\n', celsius, fahr);
end 
Expand
titlecels2fahr.m
Code Block
titlecels2fahr.m
function retur = cels2fahr(celsius)
    retur = 9/5*celsius + 32;
end 

 

Videoforklaring (mm:ss)

Del 1 (mm:ss)Del 2 (mm:ss)
  

 

Løsningsforslag

Expand
titleHvis du har prøvd selv, trykk her for å se svaret...
Code Block
titlefahrenheit.m
svar = input('Ønsker du å skrive inn egne Celsius-verdier? (ja/nei) ', 's');
if strcmp(svar, 'ja')
    celsius = les_inn_tall('Skriv inn Celsius-verdi: ');
    les_inn_flere = ~isempty(celsius);
    while les_inn_flere
        siste_verdi = les_inn_tall('Skriv inn Celsius-verdi: ');
        les_inn_flere = ~isempty(siste_verdi);
        celsius = [celsius, siste_verdi];
    end
    celsius = sort(celsius);
    skriv_ut_fahr(celsius);
else
    skriv_ut_fahr([-20, 0, 18, 37, 100]);
end
 

Oppgave 5.2.2: Tittel

 

Utdelt kode

...