2017-04-06 13 views
-3

私はC++の初心者です。私はC++の構文を研究する簡単なプログラムを書いています。コードは応答に行くが間違っている。コードは:このコードをC++で修正するにはどうすればよいですか?

// converter_temp1.cpp 
// converter 3 temp. celsius, fahrenheit e kelvin 

// entrar: temperatura, escala atual e pretendida 

#include "stdafx.h" 


int main() 
{ 
    double t, tempC, tempF, tempk; 

    std::string sa, sp, cel, fah, kel; 

    std::cout << "Enter with your temperature, actual and pretend scale, for celsius = cel, fahrenheit = fah and kelvin = kel" << std::endl; 
    std::cin >> t >> sa >> sp; 

    if (sa == cel && sp == fah) { 
     tempF = 32 + (9 * t)/5; 
     std::cout << ">>>> Temperature is " << tempF << " F in Fahrenheit!!!! <<<<" << std::endl; 

    }else { 
     if (sa == kel && sp == cel) { 
      tempC = t + 273; 
      std::cout << ">>>> Temperature is " << tempC << " C in Celsius!!!! <<<<" << std::endl; 

     } 
     else { 
      std::cout << ">>>> Temperature scale wrong!!!! <<<<" << std::endl; 
     } 
    } 

    return 0; 
} 

です。このコードの答えは、常にです。>>>>温度スケールが間違っている!!!! < < < <。 誰か助けてくれますか?

ありがとうございます!

+4

あなたは比較のために使用する文字列を決して初期化しません。なぜあなたは何か違うことを期待しましたか? – user463035818

+0

これは問題ではありませんが、余分なものが必要な場合を除き、 'std :: endl'を使用しないでください。 '' \ n ''は行を終わらせます。 –

答えて

4

変数cel,fahおよびkelには決して値を割り当てないので、それらはすべて空文字列で初期化されます。そのため、空でない値をsaspと入力すると、それらは決してcel,fahまたはkelと等しくなくなり、elseブランチになります。

ところで、この質問を入力するよりも速く問題が見つかる可能性があります。それを行うにはhereをお読みください。

関連する問題