Created by Unknown User (benjambj), last modified on 16.09.2016
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
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
function skriv_ut_fahr(celsius)
fahr = cels2fahr(celsius);
fprintf('Celsiusverdi %.2f tilsvarer Fahrenheitverdi %.2f\n', celsius, fahr);
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
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
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