2016-07-11 14 views
-3

私はこの温度変換プログラムをC++でクラスと関数を実践しながら書きました。コードは機能しますが、私はそれに完全に満足していません。 このコードをより効率的にする方法はありますか?自分のコードに永続的な間違いがありますか? 私のコードを批判するなら、私はそれが大好きです。ありがとう。このコードを改善するにはどうすればよいですか? (C++温度変換器)

#include<iostream> 
#include<string> 

class convert{ 
public: 
int c_con(float y){ 
float f; 
    std::cout << "Converting to Fahrenheit: "; 
    f=y*9/5+32; 

    std::cout << f << std::endl; 
    return 0; 
} 
int f_con(float x){ 
float c; 
    std::cout << "Converting to Celsius:"; 
    c=(x-32)*5/9; 

    std::cout << c << std::endl; 
return 0; 
} 

}; 


int main(){ 
char a; 
int b; 
    convert temp; 

    std::cout << "__________Temp Converter-----------" << std::endl; 
    std::cout << "What would like to convert? (c/f): "; 
    std::cin >> a; 

    switch(a) 
    { 
    case 'c' : std::cout << "Input Celsius: "; 
      std::cin >> b; 
      temp.c_con(b); 
      break; 
    case 'f' :std::cout << "Input Fahrenheit: "; 
       std::cin >> b; 
       temp.f_con(b); 
       break; 
    default: std::cout << "Wrong input."; 
    } 
return 0; 
} 
+4

コードに問題がなければhttp://codereview.stackexchange.com/に投稿してください。 – ifma

+1

(変換された温度のような)変換関数から意味のあるものを返し、変換関数から印刷ステートメントを移動します。 – Galik

+0

これは、コードレビューに属していますが、この質問は「この質問はスタック交換ネットワークの別のサイトに属しています」というオプションがないので、この質問をトピックとして閉じるよう投票しています。 –

答えて

2

私は他の人がより良い提案を持っていると確信しているが、いくつかの非常に基本的な改良点は以下のとおりです。

#include<iostream> 
// Don't import libraries you don't use. 

class Convert //Classes typically have the leading character Capitalized. 
{ 
public: 
    /*Give meaningful function names.*/ 
    float celsius_To_Fahrenheit(const float &y) /*Placing "const" in your parameters is good practice if you don't need/want to change the parameter inside the function.*/ 
    { 
     //Try not to use local variables in classes, use member variables if you do need a variable. 
     //I'm not sure either member function *needs* a local variable. 
     //And I don't think this very simple classes needs local variables, yet. 
     return y*9/5+32; /*Use "return" to return *something* otherwise, use "void" functions.*/ 
    } 

    float fahrenheit_To_Celsius(const float &x)/*And using "&" to pass by reference is good in combination with "const", this makes your code more efficient so multiple copies don't exist of the same variable.*/ 
    { 
     //Avoid putting std::cout statements inside classes as a habit. 
     return (x-32)*5/9; 
    } 
}; 

int main() 
{ 
    char choice = 'z'; //Give meaningful variable names. 
    float temperature = 1; // Initialize local variables! 
    Convert temp_converter; 

    std::cout << "__________Temp Converter-----------" << std::endl; 
    std::cout << "What would like to convert? (c/f): "; 
    std::cin >> choice; 

    switch(choice) 
    { 
     case 'c' : std::cout << "Input Celsius: "; 
      std::cin >> temperature; 
      std::cout << temperature << " converted to Fahrenheit is " << temp_converter. celsius_To_Fahrenheit(temperature) << std::endl; 
      break; 
     case 'f' :std::cout << "Input Fahrenheit: "; 
      std::cin >> temperature; 
      std::cout << temperature << " converted to Celcius is " << temp_converter. fahrenheit_To_Celsius(temperature) << std::endl; 
      break; 
     default: 
      std::cout << "Wrong input."; 
    } 
    return 0; 
} 
+1

あなたが_do_ローカル変数を初期化しないでください。 'float f;を指定すると潜在的なバグがあります。/* ...他のコード... */f = 1; '誤って割り当ての前に' f'を使うと、 'float f = 1;'を持つ方が安全です。 – CompuChip

+0

これを指摘してくれてありがとう! – NonCreature0714

1

@ NonCreature0714はすでにそれを行っているとして、私は、コードの壁を投稿しません。

convertというクラスはありません。 volt_ampereswattsもそこに貼り付けますか?

また、摂氏を使用する機能が多く、華氏を使用する別の負荷がすべて同じクラスで一緒に暮らしているとどうなりますか?個人的に私はcelsiusと呼ばれるコードユニットとfahrenheitと呼ばれる別のコードユニットを持っていて、celsius_fahrenheitと呼ばれる3つ目のユニットがあり、それらの間の変換を処理します。つまり、すべての華氏を引っ張らずに摂氏を必要とするコードを作成できます。

関連する問題