C++ 使用for循环检查数字的顺序、降序和升序

C++ 使用for循环检查数字的顺序、降序和升序,c++,arrays,for-loop,C++,Arrays,For Loop,用户将在数组中输入五个值(范围2-9)。然后,代码应该检查输入的五个值是否按降序或升序排列 例如: 2、3、4、5、6-将导致布尔值设置为“真” 6,5,4,3,2-结果与上述结果相同 但是,如果有两个相同的数字或序列不符合顺序,则bool值为“false” 例如: 2,3,2,5,6-错误 2,3,5,4,6-错误 7,8,6,5,4-错误 我已经分别完成了两个案例,当有一对时和检查订单是否增加时 对于循环,我已设置为检查递增顺序/对 for(int count = 0; count <

用户将在数组中输入五个值(范围2-9)。然后,代码应该检查输入的五个值是否按降序或升序排列

例如:

2、3、4、5、6-将导致布尔值设置为“真”

6,5,4,3,2-结果与上述结果相同

但是,如果有两个相同的数字或序列不符合顺序,则bool值为“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++){
如果((卡片[计数]>卡片[计数+1])| |(卡片[计数]==卡片[计数+1]))
结果=假;
其他的
继续;
}
对于我用来检查降序的循环

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++){
如果((卡片[计数]<卡片[计数+1])| |(卡片[计数]==卡片[计数+1]))
结果=假;
其他的
继续;
}
用于检查递增顺序的for循环不起作用,最后将其全部放在一起。我试着把它分解成几个部分,以使它更简单

编辑:


根据分配准则,我无法对数组或任何修改数组的内容进行排序。也不允许创建副本并使用它。

首先,您不需要
,否则继续–这将自动发生

第二,您的方法是正确的,但是您的数组访问中有一个错误。您的循环从0变为4(当它达到5时,将结束循环)。当您查看数组的第4项(数组中的第5项)并将其与第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;
}
bool-isarraymononic(std::vector&arr){
if(arr.empty()){
返回true;
}
bool isAscending=true,isDescending=true;
int pre=arr[0];
对于(int i=1;ipre;
isDescending=isDescending&arr[i]
如果(卡片[count]>=cards[count+1]),则该条件可以压缩为
,对于另一个条件也是如此