Проверка массива на наличие совпадений.
- Войдите на сайт для отправки комментариев
Сб, 16/06/2018 - 21:05
Уважаемые программисты,
Каким циклом можно сравнить имеющиеся значение с каждой ячейкой массива ?
Например, есть массив из чисел от 1 до 10.
Значение переменной равно 5.
Если переменная равна какой-то ячейке массива, то вернуть true и тд по такому же принципу.
Так Вам нужно "на наличие совпадений" или на присутствие там конкретного значения?
Если как Вы пишете, то обычными линейным циклом по всем элементам массива. Как только нашёл - дальше сравнивать прекращаетм.
можно for() можно while(). Но почитайте все же учебники, а не бегайте по форуму за подсказками.
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); }Спасибо, вышло вот так.
можно for() можно while(). Но почитайте все же учебники, а не бегайте по форуму за подсказками.
Прочитал c++ для чайников. Хочется после прочтения главы брать код из примера и как-то работать над ним.
Переписывание занимает большую часть времени, потом ни на какое редактирование сил не остается.
В интернете я учебников не находил. Поэтому с того момента я ограничиваюсь примерами с форумов или видео-роликами.
Если как Вы пишете, то обычными линейным циклом по всем элементам массива. Как только нашёл - дальше сравнивать прекращаетм.
Если массив константный, либо заполняется один раз, лучше его упорядочить, после чего - бинарным поиском.
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"); }Спасибо, вышло вот так.
/**/ 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 байт. */Если массив константный, либо заполняется один раз, лучше его упорядочить, после чего - бинарным поиском.
Это Вы ТС говорите :)))) Только не зубудь про Вашу же идею: "Сначала объяснить что это такое и чем отличается от цикла return" :)))
Спасибо, вышло вот так.
/**/ 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 байт. */Спасибо, я учту)