[英]My c++ program that reads in a matrix and prints out the non-zero numbers is generating a runtime error
[英]Cannot work out the last of this little C++ program that prints numbers in numerical sequence
我目前正在經歷“編程:使用C ++的原理和實踐”,我還不能完全完成一項特定的練習。 在該程序中,用戶將輸入三個隨機數,然后程序將按數字順序返回這些數字。 如果第一個和第二個數字輸入的最低,那么它們將正確返回,但是第三個和第二個數字不是,並且我不確定為什么。 這是代碼:
int main()
{
string barn;
int val1 = 0, val2 = 0, val3 = 0;
cout << "Enter the first number: ";
cin >> val1;
cout << "Enter the second number: ";
cin >> val2;
cout << "Enter the third number: ";
cin >> val3;
if (val1 < val2 && val3)
{
cout << val1 << " ";
if (val1 < val2)
{
cout << val2 << " ";
cout << val3 << " ";
}
else
{
cout << val3 << " ";
cout << val2 << " ";
}
}
else if (val2 < val1 && val3)
{
cout << val2 << " ";
if (val2 < val1)
{
cout << val1 << " ";
cout << val3 << " ";
}
else
{
cout << val3 << " ";
cout << val1 << " ";
}
}
else if(val3 < val1 && val2)
{
cout << val3 << " ";
if (val3 < val1)
{
cout << val1 << " ";
cout << val2 << " ";
}
else
{
cout << val2 << " ";
cout << val1 << " ";
}
}
cin >> barn;
}
1 3 5打印:1 3 5. 3 1 5打印:1 3 5. 3 5 1打印:3 5 1`-這是我的問題所在。 第二個else if語句似乎無法正常工作,我不確定為什么。
這不符合您的想法:
if (val1 < val2 && val3)
當( val1
大於val2
)AND( val3
計算結果不同於0
)時,您的if
條件為true
你應該做if (val1 < val2 && val1 < val3)
其他if
語句也適用相同的規則。
另外,您的內部if
語句不正確。 示例:一旦檢查val1 < val2 && val1 < val3
,則應檢查val2 < val3
。 下面是您的第一個if
語句的示例:
if (val1 < val2 && val1 < val3)
{
cout << val1 << " ";
if (val2 < val3)
{
cout << val2 << " ";
cout << val3 << " ";
}
else
{
cout << val3 << " ";
cout << val2 << " ";
}
}
最后,您應該考慮用戶多次輸入相同值的情況。
順便說一句,351不會使您進入if語句的第三位。 檢查您的操作員優先級或完全寫出您的操作員,例如:
else if ((val3 < val1) && (val3 < val2))
另請參閱: http : //en.cppreference.com/w/cpp/language/operator_precedence
Imo,您應該始終完全寫出您的運算符,特別是如果您是該語言的新手,那確實有幫助。 :)
這個:
if(val1 < val2 && val3){...}
並不意味着您認為的那樣。 正確的寫法是:
if((val1 < val2) && (val1 < val3)){...}
多余的括號可能不是必需的,但是在這種情況下,我的規則比后悔更好:)
什么:
if(val1 < val2 && val3){...}
的確是如果布爾值(val1 < val2)
和(val3)
為true,則返回true。 如果val3
不為零 (** cf EDIT節),則(val3)
的評估結果為true,否則評估為false。
更改您的代碼以考慮到這一點,然后告訴我們是否可行,我沒有檢查其余的是否正確。
編輯我的答案是說除0以外的任何值都被評估為true。
沒錯,謝謝:)我認為了解別人的誤解對其他人可能有用。
當然,這肯定是一個初學者的錯誤,我將其作為進行顯式條件測試的一課,而從不信任該程序來按我的意願對其進行評估。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.