Проверка массива на наличие совпадений.

BigMeister
Offline
Зарегистрирован: 11.02.2018

Уважаемые программисты,

Каким циклом можно сравнить имеющиеся значение с каждой ячейкой массива ?

Например, есть массив из чисел от 1 до 10.

Значение переменной равно 5.

Если переменная равна какой-то ячейке массива, то вернуть true и тд по такому же принципу. 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Так Вам нужно "на наличие совпадений" или на присутствие там конкретного значения?

Если как Вы пишете, то обычными линейным циклом по всем элементам массива. Как только нашёл - дальше сравнивать прекращаетм.

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

можно for() можно while(). Но почитайте все же учебники, а не бегайте по форуму за подсказками.

BigMeister
Offline
Зарегистрирован: 11.02.2018
int nums[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int i;
void setup() 
{
  Serial.begin(9600);
  pinMode(2, INPUT_PULLUP);
}

void loop() 
{
    for (i = 0; i < 10; i++)
    {
      nums[i];
      if (nums[i] == 10)
      {
        Serial.println("Match found");
        break;
      }
      if (i == 9)
      {
        Serial.println("No mathces found");
      }
    }
    delay(2000);
}

Спасибо, вышло вот так.

BigMeister
Offline
Зарегистрирован: 11.02.2018

qwone пишет:

можно for() можно while(). Но почитайте все же учебники, а не бегайте по форуму за подсказками.

Прочитал c++ для чайников. Хочется после прочтения главы брать код из примера и как-то работать над ним. 

Переписывание занимает большую часть времени, потом ни на какое редактирование сил не остается. 

В интернете я учебников не находил. Поэтому с того момента я ограничиваюсь примерами с форумов или видео-роликами. 

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

ЕвгенийП пишет:

Если как Вы пишете, то обычными линейным циклом по всем элементам массива. Как только нашёл - дальше сравнивать прекращаетм.

Если массив константный, либо заполняется один раз, лучше его упорядочить, после чего - бинарным поиском.

sadman41
Offline
Зарегистрирован: 19.10.2016
searchForNumber = 5;

for (i = 0; i < 10; i++) {    
     if (nums[i] == searchForNumber)  break;
 }

if ( i < 10) {
   Serial.print("Match found on "); Serial.print(i); Serial.println("-th position");
 } else {
   Serial.println("No matches found");
}

 

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

BigMeister пишет:

Спасибо, вышло вот так.

Но так лучше. Не тащите все в loop() - организовывайте функции.

/**/
int nums[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

bool select() {
  for (int i; i < 10; i++) {
    if (nums[i] == 10);
    return true;
  }
  return false;
}
//---------------------------------------
void setup() {
  Serial.begin(9600);
  if (select()) Serial.println("Match found");
  else Serial.println("No mathces found");
}
void loop() {

}
/*Скетч использует 1498 байт (4%) памяти устройства. Всего доступно 30720 байт.
  Глобальные переменные используют 214 байт (10%) динамической памяти, оставляя 1834 байт для локальных переменных. Максимум: 2048 байт.
*/

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

andriano пишет:

Если массив константный, либо заполняется один раз, лучше его упорядочить, после чего - бинарным поиском.

Это Вы ТС говорите :)))) Только не зубудь про Вашу же идею: "Сначала объяснить что это такое и чем отличается от цикла return" :)))

BigMeister
Offline
Зарегистрирован: 11.02.2018

qwone пишет:

BigMeister пишет:

Спасибо, вышло вот так.

Но так лучше. Не тащите все в loop() - организовывайте функции.

/**/
int nums[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

bool select() {
  for (int i; i < 10; i++) {
    if (nums[i] == 10);
    return true;
  }
  return false;
}
//---------------------------------------
void setup() {
  Serial.begin(9600);
  if (select()) Serial.println("Match found");
  else Serial.println("No mathces found");
}
void loop() {

}
/*Скетч использует 1498 байт (4%) памяти устройства. Всего доступно 30720 байт.
  Глобальные переменные используют 214 байт (10%) динамической памяти, оставляя 1834 байт для локальных переменных. Максимум: 2048 байт.
*/

 

Спасибо, я учту)