Programmering

Konvertering af temperatur

08. august 2016 af Searchmath

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!


Brugbart svar (0)

Svar #1
08. august 2016 af LarsJensen0

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 #2
10. august 2016 af Searchmath

Der er åbenbart noget andet også? :(


Brugbart svar (0)

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.