-2
fail = 0;   

if (masivs[0][0]>0 | masivs[0][1]>0 | masivs[0][2]>0| masivs[0][3]>0 |masivs[0][4]>0| masivs[0][5]>0|masivs[0][6]>0| masivs[0][7]>0|masivs[0][8]>0|masivs[0][9]>0)
{
    fail = 1;
}   
else {
    fail = 0;
}

我需要检查 0 行中是否有一些正元素,如果是,则需要将失败更改为 1。

4

3 回答 3

5

使用std::any_of(C++11) 清楚地表明您的意图。我假设你有一个ints 数组。但是,在 C++14 中,您可以将int以下内容替换为auto,它适用于任何类型。

fail = std::any_of(
    std::begin(masivs[0]), std::end(masivs[0]), 
    [](int i) {return i > 0;}
);

确保已知数组大小std::begin并且std::end可以实际工作(即,数组实际上不是指针)。

对于完全 C++11 之前的解决方案,您可以使用std::find_if,如果您不想编写自己的谓词,则可以使用现已弃用std::bind2ndstd::greater函子来绑定 0:

int *end = masivs[0] + 9;
fail = (std::find_if(masivs[0], end, std::bind2nd(std::greater<int>(), 0)) != end);
于 2013-10-01T17:29:21.137 回答
4

只需使用一个for循环:

fail = 0;
int i;
for(i = 0; i < 10; i++) {
    if(masivs[0][i] > 0) {
        fail = 1;
        break;
    }
}
于 2013-10-01T17:26:25.527 回答
2

使用 for 循环遍历要检查的行中的列。

于 2013-10-01T17:26:37.257 回答