[英]Using a for loop to check order of numbers, decreasing and increasing order
用戶將輸入五個值(范圍2-9)到一個數組中。 然后,應假定代碼檢查輸入的五個值是按降序還是按升序排列。
例:
2、3、4、5、6-將布爾值設置為“ true”
6,5,4,3,2-與上述結果相同
但是,如果有兩個相同的數字或順序不正確,則遞增或遞減,則布爾值為“ false”
例:
2,3,2,5,6-假
2,3,5,4,6-假
7,8,6,5,4-假
我已經分別完成了兩個案例,當有一對案例並且在檢查遞增順序時。
對於循環,我已設置為檢查遞增順序/對
for(int count = 0; count < 5; count++){
if((cards[count] > cards[count + 1]) || (cards[count] == cards[count + 1]))
result = false;
else
continue;
}
對於循環,我檢查降序
for(int count = 0; count < 5; count++){
if((cards[count] < cards[count+ 1]) || (cards[count] == cards[count + 1]))
result = false;
else
continue;
}
用於檢查升序的for循環不起作用,最后將它們放在一起。 我嘗試將其分解為各個部分,以使其更容易。
編輯:
根據分配准則,我無法對數組或對其進行修改的任何內容進行排序。 也不允許創建副本並使用該副本。
首先,您不需要“ else continue;
–這將自動發生。
其次,您走在正確的軌道上,但是數組訪問出錯。 您的循環從0變為4(當循環數達到5時將結束循環)。 當您查看數組的第4項(數組中的第五項)並將其與第5項(數組中的第六項)進行比較時,您將與不存在的值進行比較。 這可能會導致未定義的行為。
解決方案是將循環中的條件設置為< 4
以便在最后一個循環中將倒數第二個項目與最后一個項目進行比較。
您可以在一個循環中檢查單調性。
bool isArrayMonotonic(std::vector<int>& arr) {
if (arr.empty()) {
return true;
}
bool isAscending = true, isDescending = true;
int pre = arr[0];
for (int i = 1; i < arr.size(); ++i) {
isAscending = isAscending && arr[i] > pre;
isDescending = isDescending && arr[i] < pre;
pre = arr[i];
}
return isAscending || isDescending;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.