2013-01-20 11 views
5

Próbuję zmienić Fahrenheit Kelvina ANF wzoru jest K = 5/9 (° F - 32) + 273Zmiana Fahrenheita do Kelvin w C

Mój kod to:

#include <stdio.h> 
double const changeToC = 32.0; 
double const changeToK = 273.16; 

void temperatures(double n); 

int main(void) 
{ 
    int q = 'q'; 
    double userNumber; 

    printf("please enter fahrenheit number: \n"); 
    scanf("%f", &userNumber); 

    while (userNumber != q) 
    { 
     temperatures(userNumber); 
     printf("\n"); 
     printf("please enter fahrenheit number: \n"); 
     scanf("%f", &userNumber); 
    } 
} 

void temperatures(double n) 
{ 
    double celsius, kelvin; 

    celsius = 5.0/9.0 * (n - changeToC); 
    kelvin = 5.0/9.0 (n - changeToC) + changeToK; 

    printf("fahrenheit is: %.2f - celsius is: %.2f - kelvin is: %.2f", 
      n, celsius, kelvin); 
} 

muszę wejście dostać Fahrenheita podwójne, a wydrukuj wartość celsiusa i kelwina.

W Fahrenheita do Kelvin (kelvin = 5.0/9.0 (n - changeToC) + changeToK;) linia Dostaję błąd:

called object type double is not function or function pointer

Czy możesz mi powiedzieć, co to oznacza?

+0

Aby przeczytać 'double', ty _have_ użyć'% lf' jako konwersji w 'scanf (3)' – vonbrand

Odpowiedz

8

Przegapiłeś operator mnożenia, *

kelvin = 5.0/9.0 * (n - changeToC) + changeToK; 

Bez mnożenia, kompilator traktuje nawiasów () jako operator wywołania funkcji.

+0

dziękuję @David Heffernan! – MNY

+1

Kolejny problem z kodem: scanf ("% f", i userNumber); powinno być scanf ("% lf", i userNumber); ponieważ% f oczekuje wartości zmiennoprzecinkowej zamiast podwójnej. – fbafelipe

+2

@fbafelipe: '% f' oczekuje ** podwójnego **. – Mat

0
kelvin = 5.0/9.0 * (n - changeToC) + changeToK; 

Place operator mnożenia .. to rozwiąże Twój problem

Powiązane problemy