检查数组中的所有值

时间:2014-12-01 19:44:10

标签: c++ c

我有一个数组:

int data[5] = {0,1,0,0,0};

我想检查data的所有元素是1还是0。我用for loop尝试过,但没有解决。

 int control = 0;
 for(a=0; a<5; a++){
    if(data[a] == 1) control = 1;          
 }

有可能吗?谢谢。 (我对C来说很新)

4 个答案:

答案 0 :(得分:1)

您可以使用std::all_ofstd::any_of

#include <algorithm>
int data[5] = {0,1,0,0,0};

if ( std::all_of(std::begin(data), std::end(data), [](int i){return i == 0;}) )
{
    std::cout << "All values are zero";
}

if ( std::all_of(std::begin(data), std::end(data), [](int i){return i == 1;}) )
{
    std::cout << "All values are one";
}

好消息是这些函数表现出short-circuiting行为,因此他们不必(必然)检查每个元素。

答案 1 :(得分:1)

和C版本:OP说我想检查数据的所有元素是1还是0。

int data[5] = {0,1,0,0,0};
int a, zeros=0, ones=0;
for (a=0; a<5; a++) {
    if (data[a] == 0) zeros++;
    if (data[a] == 1) ones++;
}
if (zeros == 5)
    printf ("All elements are 0\n");
else if (ones == 5)
    printf ("All elements are 1\n");
else if (ones+zeros == 5)
    printf ("All elements are 1 or 0\n");
else
    printf ("Some elements are not 1 or 0\n");

答案 2 :(得分:0)

试试这个: -

int control = 0;
for(a=0; a<5; a++)
 {
   if(data[a] == 1 || data[a]==0) 
     control++;
 }
if (control == 5)
 {
  cout<<"The array only contains 1 and 0";
 }
else
 {
  cout<<"The array contains elements other than 0's and 1's";
 }

答案 3 :(得分:0)

您可以在for循环中执行此操作。你只需要一些跟踪结果的方法。您可以有两个表示true或false的变量。如果您假设数组全部为零或全部为1,则可以将标志设置为true。然后在for循环中,如果发现矛盾,请将相应的标志设置为false。在这种情况下,我只使用int 0表示FALSE,int 1表示TRUE;

int data[5] = {0,0,0,0,0};
int all_zero = 1;
int all_ones = 1;

for(i = 0; i < 5; i++){
    if(data[i] == 1){
        all_zero = 0;
    }
    else{
        all_ones = 0;