【问题标题】:If else statements with flags c++带有标志 c++ 的 if else 语句
【发布时间】:2017-04-11 10:27:28
【问题描述】:

所以,我有这个方法来检查我的队列数组是否正在减少,当我检查时的问题是,如果前两个项正在减少,它表示整个队列正在减少,但我希望它遍历每个成员整个数组的。 递减意味着每个整数都优于下一个整数,直到队列结束。我的 if,else 语句是错误的吗? 如果它正在减少,我的布尔值应该返回 true,否则它应该返回 false:

  template<class T>
bool queue<T>::isDecreasing() const {

    bool flag=false;

    for (size_t i = 0; i < _capacity; i++) {
        if(elements[i]>elements[i+1]){
            flag = true;
            return flag;

        }else if(elements[i]<=elements[i+1]){
            flag=false;
            return flag;
        }
    }
     return flag;
   }

【问题讨论】:

  • 你知道return语句是什么意思吗?
  • 表示返回值对吗?
  • 与您的问题无关,但我确实希望您的数组elements 中至少有_capacity+1 数量的元素。
  • 使用_capacity-1 而不是_capacity 你只需要满足条件时的最终return 语句也需要在更改flag 的值后立即跳出循环变量
  • 好的,我明白了,谢谢!

标签: c++ arrays queue


【解决方案1】:

flag 开始设置为true。然后在每次迭代中使用if 语句检查您对数组按降序排序的假设是否不正确。如果不正确,将标志设置为 false 并中断循环。 此外,循环应该运行n-1 次(n 是元素的数量),因为在每次迭代中,您都在访问当前元素和下一个元素的值。因此,在n-1th 迭代中,您将访问倒数第二个和最后一个元素的值。

template<class T>
bool queue<T>::isDecreasing() const {

bool flag=true;

for (size_t i = 0; i < _capacity - 1; i++) {
    if(elements[i]<=elements[i+1]){
        flag=false;
        break;
    }
}
 return flag;

}

【讨论】:

  • 这很有帮助
  • 很高兴我能帮上忙
最近更新 更多