Проверка между 2 элементами массива - PullRequest
0 голосов
/ 12 июня 2018

У меня есть случайный массив из 20 элементов, заданный

int a[20] = {30,20,100,30,10,120,80,200,50,160,190,60,150,140,110,170,70,40,90,180};

Я хочу выбрать 2 случайных элемента из массива и проверить, есть ли какие-либо другие значения в массиве, которые попадают между этими двумя значениями.
То есть, если выбраны 2 значения: 130 и 140, то функция должна вернуть true.
С другой стороны, если случайно выбраны 2 значения: 130 и 150, то функция должна вернуть false как 140 лежит между 2 выбранными значениями.

Есть ли более простой способ проверить это в C ++.

Спасибо.

1 Ответ

0 голосов
/ 12 июня 2018

Это именно то, что вы просили, все еще очень неоптимально, но работает :) С любым типом массива.

#include <iostream>
#include <time.h>


using namespace std;

bool inRange(int low, int high, int x);
int main()
    {
    const int arrayLength = 20;
    int a[arrayLength] = {130, 20, 100, 30, 10, 120, 80, 200, 50, 160, 190, 
      60, 150, 140, 110, 170, 70, 40, 90, 180};

    int random = 0;
    int random2 = 0;
    srand(time(NULL));
    random = rand() % arrayLength + 1;
    random2 = rand() % arrayLength + 5;


    for (int i = 0; i < arrayLength; ++i) {
        if (inRange(random, random2, a[i]) || inRange(random2, random,a[i])) 
        {
        return true;
      }
  }
getchar();
}

bool inRange(int low, int high, int x)
{
return (low <= x && x <= high);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...