C++ 关于仅正确使用设置器和变量的问题

C++ 关于仅正确使用设置器和变量的问题,c++,getter-setter,setter,converters,C++,Getter Setter,Setter,Converters,我对当前的编程任务有意见。我觉得我很快就要把它弄好了,但有些事情发生了。我知道为了使程序正常运行,我必须做一些不同的事情,因为它现在不能工作,但我不确定它是什么 我正在为如何使用一个单独的私有变量来生成这两种温度而苦苦挣扎 以下是作业: 上一节温度课。该类应该有一个以华氏为单位设置温度的函数和一个以摄氏为单位设置温度的函数。在专用部分中仅保留一个数据成员,用于存储温度。创建一个用于获取以华氏度为单位的温度的函数和一个用于获取以摄氏度为单位的温度的函数。使用驱动程序彻底测试每个功能 F=9/5C+

我对当前的编程任务有意见。我觉得我很快就要把它弄好了,但有些事情发生了。我知道为了使程序正常运行,我必须做一些不同的事情,因为它现在不能工作,但我不确定它是什么

我正在为如何使用一个单独的私有变量来生成这两种温度而苦苦挣扎

以下是作业:

上一节温度课。该类应该有一个以华氏为单位设置温度的函数和一个以摄氏为单位设置温度的函数。在专用部分中仅保留一个数据成员,用于存储温度。创建一个用于获取以华氏度为单位的温度的函数和一个用于获取以摄氏度为单位的温度的函数。使用驱动程序彻底测试每个功能

F=9/5C+32,C=5/9F-32

当前代码:

#include<iostream>
using namespace std;

class Temperature
{
private:
    double temperature;

public:
    void set_fahrenheit(double f)
    {
        temperature = f;
    }

    void set_celsius(double c)
    {
        temperature = c;
    }

    double get_fahrenheit()
    {
        return temperature;
    }

    double get_celsius()
    {
        return temperature;
    }

    double converter(double temperature)
    {
        if (temperature = f)
        {
            return (9/5)*temperature + 32;
        }
        else if (temperature = c))
        {
            return (5/9)*(temperature - 32;
        }
    }    
};

int main()
{
    Temperature Temp1;
    double temperaturetemp;
    string response;

    cout << "Would you like to convert a Celsius temperature to Fahrenheit or convert a Fahrenheit temperature to Celsius? (Enter C2F or F2C respectively)" << endl;
    cin >> response;

    cout << "Please enter the temperature you would like to convert in degrees" << endl;
    cin >> temperaturetemp;

    if (response == "C2F"){Temp1.set_fahrenheit(temperaturetemp);}
    else if (response == "F2C"){Temp1.set_celsius(temperaturetemp);}

    cout << Temp1.converter(temperaturetemp);
 }

只需使用一个特定的单位来存储内部温度,最好是Kelvin1 IMO,因为它是标准SI物理单位

将温度设置为华氏或摄氏度时,请进行必要的计算

也不要使用整数除法表示分数: 5/9将导致0整数除法,应为5.0/9.0以获得有效的双精度值。 与9/5相同,整数除法的结果为1

代码的其他问题:

在双转换器双温度函数中,尝试使用f,但不在范围内 在同一个函数中,您有一个名为temperature的参数,该参数对具有相同名称的成员变量进行阴影处理
10K=-459,67F/0K=-273.15°C

只需使用一个特定的单位在内部存储温度,最好是Kelvin1 IMO,因为它是标准SI物理单位

将温度设置为华氏或摄氏度时,请进行必要的计算

也不要使用整数除法表示分数: 5/9将导致0整数除法,应为5.0/9.0以获得有效的双精度值。 与9/5相同,整数除法的结果为1

代码的其他问题:

在双转换器双温度函数中,尝试使用f,但不在范围内 在同一个函数中,您有一个名为temperature的参数,该参数对具有相同名称的成员变量进行阴影处理
10K=-459,67F/0K=-273.15°C

您的问题是因为您试图将温度值与初始变量名进行比较,以确定它是华氏温度还是摄氏温度

if (temperature = f)
...
else if (temperature = c))
您应该选择一种温度类型而不是另一种,以便始终将值存储为,并在需要时转换为另一种。在本例中,使用摄氏度

void set_celsius(double c)
{
    temperature = c;
}
void set_fahrenheit(double f)
{
    temperature = (5.0/9.0)(f - 32);
}
同样的道理也可以用你的华氏吸气剂。您的转换器方法实际上是不需要的,也没有被称为atm

编辑

您还应该使用浮点数学,因为整数数学将被截断为0,因为您后面的值是十进制0.5555


当需要该温度类型时,将该值存储为所需温度之一将节省计算时间。在这段代码中,它不会有什么区别,但在放大软件时,消除过度处理是很重要的。

您的问题是,您试图将温度值与初始变量名称进行比较,以确定它是华氏度还是摄氏度

if (temperature = f)
...
else if (temperature = c))
您应该选择一种温度类型而不是另一种,以便始终将值存储为,并在需要时转换为另一种。在本例中,使用摄氏度

void set_celsius(double c)
{
    temperature = c;
}
void set_fahrenheit(double f)
{
    temperature = (5.0/9.0)(f - 32);
}
同样的道理也可以用你的华氏吸气剂。您的转换器方法实际上是不需要的,也没有被称为atm

编辑

您还应该使用浮点数学,因为整数数学将被截断为0,因为您后面的值是十进制0.5555


当需要该温度类型时,将该值存储为所需温度之一将节省计算时间。在这段代码中,它不会有什么区别,但在放大软件时,消除过度处理是很重要的。

记住整数数学中的5/9是0。9/5等于1。可能也不是你想要的。记住整数数学中的5/9是0。9/5等于1。可能也不是你想要的。。