簡體   English   中英

使用for循環檢查數字順序,降序和升序

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM