2017-04-06 173 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

您從不爲變量celfahkel分配一個值,因此,它們全部用空字符串初始化。這就是爲什麼當您輸入任何非空值作爲sasp時,它們永遠不會等於celfahkel,並且您最終在else分支中。

順便說一句,你可以比輸入這個問題更快找到問題。請閱讀here該怎麼做。