0

このプログラムでは、華氏 78 度を取得し、摂氏バージョンとケルビンを使用してクラスに戻そうとしています。しかし、何らかの奇妙な理由で、これを出力として取得しています。私は何を間違っていますか?

これが私の出力です。

78
0
273.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;
}
4

4 に答える 4

5

5/9は整数除算であり、結果は0。ダブルスを使用する必要があります。試してみてください。

void Temperature::setTempCelcius(double c)
{
    c = (5.0/9.0) * ( f - 32);
    celcius = c;
}
于 2011-12-16T18:52:37.747 に答える
1

5/9 の問題とは別に、'c'、'f'、および 'k' と呼ばれる 3 つの変数セットがあります。1 つのセットは、クラスのメンバー変数です。別のセットは の変数ですmainget*3 番目のセットは、さまざまな関数内のパラメーターです。

main の変数がどのような目的で機能するのか、なぜ関数がパラメーターを取得するのか、クラスに温度用の 2 つの変数セット (ccelsiusなど) がある理由は明確ではありませんが、変数のセットに異なる名前を付けると、プログラムが機能しない理由を理解しやすくなります。

于 2011-12-16T19:00:02.183 に答える
0

私の問題は、kc と 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;
}
于 2011-12-16T18:57:19.990 に答える
-1
#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;
}
于 2014-04-04T07:19:35.260 に答える