Целочисленный массив C ++ и логические функции - PullRequest
2 голосов
/ 26 апреля 2011

Мне нужно написать в C ++ полную логическую функцию, которая будет принимать целочисленный массив и его максимальный размер в качестве параметра и возвращать, есть ли в этом массиве какие-либо элементы со значением 0.

I 'Я даже не уверен, с чего начать.

Заранее спасибо.

Ответы [ 7 ]

3 голосов
/ 26 апреля 2011

Использование std::find

#include <algorithm>

bool ContainsZero(int *arr, int size)
{
   return std::find(arr, arr+size, 0) != (arr+size);
}
3 голосов
/ 26 апреля 2011
bool checkFunction(int *myArray, int size)
{
    for (int i=0; i < size; ++i)
    {
        if (myArray[i] == 0)
            return true;
    }

    return false;
}

Вы говорите о чем-то подобном? Это будет выполнять итерацию по массиву и вернет true, если где-либо есть значение 0.

2 голосов
/ 26 апреля 2011

Как насчет чтения учебника по массивам в C ++ ?

1 голос
/ 26 апреля 2011
bool TestForZero(int* myArray, int maxSize)
{
    for(int ii=0; ii<maxSize; ++ii)
      if(myArray[ii] == 0)
        return true;

  return false;
}
0 голосов
/ 26 апреля 2011
bool foo(int* array, int size)
{
    int i;
    for (i = 0; i < size; i++)
    {
        if (array[i] == 0)
        {
            return true;
        }
    }

    return false;
}

и для его вызова вы должны сделать что-то вроде:

int arr[] = { 1, 2, 3, 4, 0, 6};

foo(arr, 6);
0 голосов
/ 26 апреля 2011
bool hasZeroes(int * array, int len) {
  int zeroCount = 0;
  for (int i = 0; i < len; i++) {
    if (array[i] == 0) zeroCount++;
  }
  return zeroCount > 0;
}
0 голосов
/ 26 апреля 2011

Это звучит очень похоже на домашнее задание, поэтому я просто дам вам концепции и позволю вам учиться.

Вам нужно использовать цикл for, проверять значение каждого элемента в массиве и возвращать true, если вы его нашли, в противном случае возвращать false после выхода из цикла.

...