Programmering
Konvertering af temperatur
Hej
jeg sidder med denne opgave og er kommet frem til følgende løsning (se fil).
function T1 = convertTemperature(T, unitFrom, unitTo)
% kun følgende input skal virke.
% unitTo
if strcmp(unitTo, 'Celsius') || ...
strcmp(unitTo, 'Fahrenheit') || ...
strcmp(unitTo, 'Kelvin')
else
error('unitTo værdi er forkert!')
end;
%unitFrom
if strcmp(unitFrom, 'Celsius') || ...
strcmp(unitFrom, 'Fahrenheit') || ...
strcmp(unitFrom, 'Kelvin')
else
error('unitFrom værdi er forkert!')
end;
% fra fahrenheit til celcius
% fra celcius til fahrenheit
if strcmp(unitFrom, 'Fahrenheit') && strcmp(unitTo, 'Celcius')
T1 = (T-32)/1.8;
end;
if strcmp(unitFrom, 'Celcius') && strcmp(unitTo, 'Fahrenheit')
T1 = 1.8*T+32;
end;
% fra celcius til kelvin
% fra kelvin til celcius
if strcmp(unitFrom, 'Celcius') && strcmp(unitTo, 'Kelvin')
T1=T+273.15;
end;
if strcmp(unitFrom, 'Kelvin') && strcmp(unitTo, 'Celcius')
T1= T-237.15;
end;
% fra fahrenheit til kelvin
% fra kelvin til farhenheit
if strcmp(unitFrom, 'Farenheit') && strcmp(unitTo, 'Kelvin')
T1= (T+459.67)/1.8;
end;
if strcmp(unitFrom, 'Kelvin') && strcmp(unitTo, 'Fahrenheit')
T1= 1.8*T-459.67;
end;
end
Hvad har jeg gjort forkert? For koden virker ikke!
Svar #1
08. august 2016 af LarsJensen0 (Slettet)
Overvej om du staver "Celsius" og "Fahrenheit" rigtigt hele vejen i gennem...
En "korrekt måde" at løse det på, kunne være at lave class eller endnu bruge en enumaration til temperatur angivelse i stedet for en tekst. Du vil sikkert få samme problem hvis der angives "celsius" i stedet for "Celsius". Jeg vil anbefale dig at benytte en enummerator.
Svar #3
19. august 2016 af Eksperimentalfysikeren
Jeg kan ikke helt gennemskue det, da jeg ikke ved, hvilket sprog koden er skrevet i.
Jeg savner noget, der viser, hvor funktionen går fra og hvor til.
Jeg kan se, at sproget ikke er C, men hvis det havde været C, ville dine strcmp-test falde forkert ud. I C giver strcmp 0, hvis strengene er ens og -1 eller 1 afhængig af, hvilken af dem, der er først i alfabetisk orden. Kan det være her, fejlen er?
En lidt anden struktur i programmet kunne gøre det mere overskueligt og fjerne nogle fejlmuligheder: (Jeg skriver i lidt forkortet form:
if strcmp(to,"Celcius") == 0
if strcmp(from,"Kelvin") == 0
T1= T-273
else if strcmp(from,Farenheit") == 0
T1 = ...
else
error "Fejl i from"
end
else if strcmp(to,"Kelvin") == 0
if strcmp(from,"Celcius") == 0
osv.
else
error "fejl i to"
end
Bemærk brugen af indrykninger for at understrege strukturen.
Skriv et svar til: Konvertering af temperatur
Du skal være logget ind, for at skrive et svar til dette spørgsmål. Klik her for at logge ind.
Har du ikke en bruger på Studieportalen.dk?
Klik her for at oprette en bruger.