使用for循环检查数字顺序,降序和升序

时间:2019-02-05 06:15:45

标签: c++ arrays for-loop

用户将输入五个值(范围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,5-假

我分别完成了两个案例,分别是一对,并检查升序。

对于循环,我已经设置为检查递增顺序/对

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循环不起作用,最后将它们放在一起。我尝试将其分解为各个部分,以使其更容易。

编辑:

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

2 个答案:

答案 0 :(得分:0)

首先,您不需要else continue;-这会自动发生。

第二,您走在正确的轨道上,但是数组访问出错。您的循环从0变为4(当循环数达到5时将结束循环)。当您查看数组的第4项(数组中的第五项)并将其与第5项(数组中的第六项)进行比较时,您将与不存在的值进行比较。这可能导致未定义的行为。

解决方案是将循环条件设置为< 4,以便在最后一个循环中将倒数第二个项目与最后一个项目进行比较。

答案 1 :(得分:0)

您可以在一个循环中检查单调性。

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;
}