2013-02-04 124 views
-1

我正試圖編寫一個程序來計算體積和添加到球形或矩形形狀的魚缸中的空調量。忽略第二條語句

我想要問用戶坦克是否是圓形的,他們會回答'y','Y'還是'n','N'。但是,每當我運行程序並輸入n或N時,它仍然運行if或y語句。

請注意,我對這一切都很陌生。這是編程和邏輯類的介紹。

這裏是我的源代碼:

#include <iostream> 

using namespace std; 

int main() 
{ 
char Circle = ' '; 
int RADIUS = 0; 
int HEIcircle = 0; 
int LEN = 0; 
int WID = 0; 
int HEI = 0; 
double AMTcondCIR; 
double AMTcondREC; 
cout << "Is tank circular? "; 
cin >> Circle; 

if (Circle = 'Y' or 'y') 
{ 

cout << "Enter radius: "; 
cin >> RADIUS; 
cout << "Enter height: "; 
cin >> HEIcircle; 
AMTcondCIR = ((4/3) * 3.14 * (RADIUS^3)) * 0.01; 
cout << "Amount of Conditioner to add (in mL): " << AMTcondCIR << endl; 
} 
if (Circle = 'N' or 'n') 
{ 

cout << "Enter length: "; 
cin >> LEN; 
cout << "Enter width: "; 
cin >> WID; 
cout << "Enter height: "; 
cin >> HEI; 
AMTcondREC = (LEN * WID * HEI) * 0.01; 
cout << "Amount of Conditioner to add (in mL): " << AMTcondREC << endl; 
} 
system("pause"); 
return 0; 
} 
+2

,您在學習什麼書?更具體地說,是什麼讓你認爲你的預期比較的作用是'if(Circle ='Y'或'y')'?您應該可以獲得比現在更高質量的學習C++源代碼 – PlasmaHH

回答

1

你的if語句,條件是完全錯誤的;沒有一部分會做你認爲它的作用:if (Circle = 'Y' or 'y')

您正在尋找if (Circle == 'Y' || Circle == 'y')。你寫的是由於幾個原因是錯誤的;它使用賦值運算符(=而不是==),而二進制or的另一半始終爲真。

你寫什麼本質上是這樣的:

if ('Y') { 
    if ('y') { 

    } 
} 

和「Y」,字符,強制轉換爲布爾true,就像字符「N」,這樣既if語句的條件評估爲真。

1

更改if語句

if (Circle == 'Y' || Circle == 'y') 
... 
if (Circle == 'N' || Circle == 'n') 

比較==,而分配是=

3

在C++ =是賦值運算符。爲了平等,請使用==。 也就是說,改變

if (Circle = 'Y' or 'y') 

if (Circle == 'Y' || Circle == 'y') 

而且

if (Circle = 'N' or 'n') 

if (Circle == 'N' || Circle == 'n') 
+2

也可以考慮使用'toupper'或'tolower'來減少比較次數:if(toupper(Circle)=='N')'。 –