【问题标题】:Return Statement positioningReturn Statement 定位
【发布时间】:2019-06-13 16:45:56
【问题描述】:

我正在编写一些函数,它基本上接受输入范围和一维向量。它查看向量给定值范围内的每个数字,使得:

1) 如果左边的数字是 0,他们交换位置。

2) 如果它左边的数字等于它,他们添加。

到目前为止,这还不错。当我尝试添加返回语句时出现问题:

1) 在所有次迭代完成并且在每次迭代中至少输入一个 if 条件后,它应该返回 True。

2) 所有次迭代完成并且没有输入任何条件后,它应该返回false。

现在,如果我将这些返回语句放入循环中,它们将在此处终止此函数,但这是不可取的,因为它需要先经过所有迭代。当前代码是否与此可比,还是我需要以不同的方式重做它(如果不是,return 语句可以去哪里?)

【问题讨论】:

  • return 语句放在函数的末尾(因为你必须完成循环,它还能去哪里)。您在代码中添加一个布尔变量,用于跟踪最终返回值是真还是假。
  • 实际上它们不会交换,因为您用 i 处的值覆盖 j 处,然后将其分配回来。之后,两个位置都保持 j 的值。考虑使用std::swap(v[j], v[i])

标签: c++ for-loop if-statement vector return


【解决方案1】:
bool proc_num(std::vector<int>&v, int LB, int UB) {            
    bool check = false;
    for( int i=LB+2 ; i<UB; i++) {
        for(int j = i-1; j>LB; j--) {
            if(v[j] == 0){
                v[j] = v[i];
                check = true;
            } else if(v[j] == v[i]) {
                v[j]= v[j]+v[i];
                v[i] = 0;
                check = true;
            }
        }
    }
    return check;
}

您可以简单地添加一个布尔值以确保至少输入了一个 if 条件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-15
    • 1970-01-01
    • 2022-11-12
    • 2015-11-21
    • 1970-01-01
    • 2016-12-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多