2013-01-20 7 views
5

Sto cercando di cambiare Fahrenheit a Kelvin ANF la formula è K = 5/9 (° F - 32) + 273Cambiare fahrenheit Kelvin in C

Il mio codice è:

#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); 
} 

Ho bisogno l'input per ottenere un fahrenheit in camera doppia, e stampa il valore di celsius e kelvin.

Nella Fahrenheit a Kelvin (kelvin = 5.0/9.0 (n - changeToC) + changeToK;) Linea sto ottenendo un errore:

called object type double is not function or function pointer

Può cortesemente dirmi cosa significa questo?

+0

Per leggere 'double', si _deve_ usare'% lf' la conversione in 'scanf (3)' – vonbrand

risposta

8

vi siete persi l'operatore di moltiplicazione, *

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

Senza l'operatore di moltiplicazione, il compilatore considera le parentesi () come operatore chiamata di funzione.

+0

grazie @ David Heffernan! – MNY

+1

Un altro problema con il codice: scanf ("% f", & userNumber); dovrebbe essere scanf ("% lf", & userNumber); perché% f si aspetta un float anziché il doppio. – fbafelipe

+2

@fbafelipe: '% f' si aspetta un ** doppio **. – Mat

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

Posizionare l'operatore di moltiplicazione .. questo risolve il problema

Problemi correlati