用户将输入五个值(范围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循环不起作用,最后将它们放在一起。我尝试将其分解为各个部分,以使其更容易。
编辑:
根据分配准则,我无法对数组或对其进行任何修改的排序。创建副本并使用该副本也是不允许的。
答案 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;
}