我的温度转换有什么问题?

What's wrong with my temperature conversions?

本文关键字:问题 什么 温度 转换 我的      更新时间:2023-10-16

在这个程序中,我试图取78华氏度,并将它们返回到一个类中,其中包含摄氏版本和开尔文。但是由于一些奇怪的原因,我得到的只是这个作为输出。我做错了什么?

这是我的输出

<>之前780273.15之前
#include <iostream>
using namespace std;

class Temperature
{
public:
    double getTempKelvin();
    double getTempFahrenheit();
    double getTempCelcius();
    void setTempKelvin(double k);
    void setTempFahrenheit(double f);
    void setTempCelcius(double c);
private:
    double kelvin, fahrenheit, celcius;
    double c, f, k;
};
int main ()
{
    double c, f, k;
    Temperature Conv;
    Conv.setTempFahrenheit(f);
    Conv.setTempCelcius(c);
    Conv.setTempKelvin(k);
    cout << Conv.getTempFahrenheit() << endl;
    cout << Conv.getTempCelcius() << endl;
    cout << Conv.getTempKelvin() << endl;

    return 0;
}
void Temperature::setTempFahrenheit(double f)
{
    f = 78;
    fahrenheit = f;
}
void Temperature::setTempCelcius(double c)
{
    c = (5/9) * ( f - 32);
    celcius = c;
}
void Temperature::setTempKelvin(double k)
{
    k = c + 273.15;
    kelvin = k;
}


double Temperature::getTempFahrenheit()
{
    return fahrenheit;
}
double Temperature::getTempCelcius()
{
    return celcius;
}

double Temperature::getTempKelvin()
{
    return kelvin;
}

5/9是整数除法,将得到0。你需要使用double, Try:

void Temperature::setTempCelcius(double c)
{
    c = (5.0/9.0) * ( f - 32);
    celcius = c;
}

除了5/9问题之外,您还有三组变量,分别是'c'、'f'和'k'。一类是类中的成员变量。另一组是main中的变量。第三组是各种get*函数内部的参数。

不清楚main中的变量的目的,为什么函数要接受参数,或者为什么你的类有两组温度变量(ccelsius,等等),但如果你给变量集不同的名称,它会变得更容易理解为什么你的程序不工作。

似乎我的问题是,我正在清除k c和f double,所以我只是从函数中删除它们。

#include <iostream>
using namespace std;
double c, f, k;
class Temperature
{
public:
    double getTempKelvin();
    double getTempFahrenheit();
    double getTempCelcius();
    void setTempKelvin();
    void setTempFahrenheit();
    void setTempCelcius();
private:
    double kelvin, fahrenheit, celcius;
    double c, f, k;
};
int main ()
{
    Temperature Conv;
    Conv.setTempFahrenheit();
    Conv.setTempCelcius();
    Conv.setTempKelvin();
    cout << Conv.getTempFahrenheit() << endl;
    cout << Conv.getTempCelcius() << endl;
    cout << Conv.getTempKelvin() << endl;

    return 0;
}
void Temperature::setTempFahrenheit(){
    f = 78;
    fahrenheit = f;
}
void Temperature::setTempCelcius()
{
    c = (5.0/9.0) * ( f - 32);
    celcius = c;
}
void Temperature::setTempKelvin()
{
    k = c + 273.15;
    kelvin = k;
}


double Temperature::getTempFahrenheit()
{
    return fahrenheit;
}
double Temperature::getTempCelcius()
{
    return celcius;
}

double Temperature::getTempKelvin()
{
    return kelvin;
}
#include<iostream>
using namespace std;
class temperature
{
    public :
    virtual void calculate(float)=0;
}; 
class ftoc : public temperature
{
    public :
    float c;
    void calculate(float f)
    { 
        c=(f-32)*5/9;
        cout<<"Temperature in celcius is : "<<c<<" `C "<<endl;
    }
};
class ftok : public temperature
{
    public : 
    float k;
    void calculate(float f)
    {
        k=(f+459.67)*5/9;
        cout<<"Themperature in kelvin is : "<<k<<" K "<<endl;
    }
};
int main()
{
    float f;
    ftoc a;
    ftok b;
    cout<<"Enter the temperature : ";
    cin>>f;
    a.calculate(f);
    b.calculate(f);
    return 0;
}