Child pages
  • Oppgave 4.2.5: Fahrenheit-script med uvisst antall referanseverdier
Skip to end of metadata
Go to start of metadata

Tidligere lagde du et script som lot brukeren skrive inn en rekke Celsius-verdier, og konverterte én og én til Fahrenheit. I scriptet måtte brukeren bestemme seg på forhånd for hvor mange Celsius-verdier som skulle skrives inn.

Endre scriptet slik at brukeren kan skrive inn et vilkårlig antall Celsius-verdier. Hvis brukeren trykker enter uten å skrive noe, skal scriptet avslutte. 

Utdelt kode

 fahrenheit.m
fahrenheit.m
svar = input('Ønsker du å skrive inn egne Celsius-verdier? (ja/nei) ', 's');
if strcmp(svar, 'ja')
    antall = input('Hvor mange verdier? ');
    for i = 1:antall
        celsius = input('Skriv inn Celsius-verdi: ');
        skriv_ut_fahr(celsius);
    end
else
    skriv_ut_fahr(-20);
    skriv_ut_fahr(0);
    skriv_ut_fahr(18);
    skriv_ut_fahr(37);
    skriv_ut_fahr(100);
end 
 skriv_ut_fahr.m
skriv_ut_fahr.m
function skriv_ut_fahr(celsius)
    fahr = cels2fahr(celsius);
    fprintf('Celsiusverdi %.2f tilsvarer Fahrenheitverdi %.2f\n', celsius, fahr);
end 
 les_inn_tall.m
les_inn_tall.m
function retur = les_inn_tall(melding)
    tallstr = input(melding, 's');
    tall = str2double(tallstr);
    er_ugyldig = isnan(tall);
    while er_ugyldig
        fprintf('Teksten %s kan ikke tolkes som et tall\n', tallstr);
        tallstr = input(melding, 's');
        tall = str2double(tallstr);
        er_ugyldig = isnan(tall);
    end
    retur = tall;
end 

Videoforklaring (10:25)

Løsningsforslag

 Hvis du har prøvd selv, trykk her for å se svaret...
fahrenheit.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 
les_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 
  • No labels