我有一个由
给出的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 ++中检查它。
感谢。
答案 0 :(得分:1)
这完全符合您的要求,仍然非常不理想,但它的工作原理:)使用任何类型的数组。
#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);
}