将单个整数与 C 中的整数数组进行比较



如何使用 C 语言将单个整数与十个整数的数组进行比较,以查找单个整数是否包含在数组中? 如果最初的问题不清楚,我很抱歉,而滑动等于我想输出的数组中的任何数字 PORTD=0b10000000。 谢谢!

short a[10]={10, 11, 12, 13, 14, 15, 16, 17, 18, 19}; //Array of accepted passwords.
short array[10];
int i;
for(i=0; i<10; i++){
    array[i]=a[i];
}
srand(clock());
while(1){
int swipe=rand() % 20; /* Simulated code read from card swipe, in this
                        * instance we used a random number between
                        * 1 and 20.*/
for(i=0; i<10; i++){    
    if(swipe == array[i]) {
        PORTD=0b10000000;
    } else {
        PORTD=0b00001000;
    } //If swiped code evaluates as one of the approved codes then set PORTD RD7 as high.
}
char Master=PORTDbits.RD7;

这似乎已经解决了...感谢您的帮助!

for(i=0; i<10; i++){    
if(swipe == array[i]) {
    PORTD=0b10000000;
    break;
} else {
    PORTD=0b00001000;
    }
}

您需要根据接受密码数组中的所有十个值测试滑动值。

例如,如下所示

for(i=0; i<10; i++)
  if(swipe == array[i]) {
    set a true flag (and maybe exit the for loop)
  }
Depending on the flag, set the output

除了@kaylum的回答...

因为您是在循环中调用rand(),所以在进入循环之前需要先调用srand()

srand(clock());//for example
while(1){
    LATD=0x00;
    int swipe=rand() % 20;
    ...   

否则,每次执行时,您获得的随机数将是相同的值序列。

此外,如果在用于比较之前未重新初始化i,则为 == 10。 在用作数组索引之前,需要重置它...

此外,在您的代码中,您似乎要根据 10 个接受的密码检查最新的随机数。 如果这是正确的,您必须比较所有 10 个:

int main(void)
{
    srand(clock());//for example
    j = 0;
    while(1)
    {
        int swipe=rand() % 20;
        PORTD=0b00000000;
        for(i=0;i<10;i++)
        {
            j++;
            if(swipe == array[i]) 
            {
                PORTD=0b10000000;
                break;
            } 
        }
        //to show ratio of legal to illegal passcodes...
        printf("times through: %d  Value of PORTD %dn", j, PORTD);
    }
}

if(swipe == a[i]) .这将调用未定义的行为,因为i是 10,而 10 是越界索引。有效索引为 0 到 9。

您正在尝试模拟随机读卡操作并在不同的实例中获得通过/失败。滑动值介于 1 到 20 之间,密码仅在 10、19 范围内,您希望查看某些实例是否失败。这是对的吗?

如果是这样,考虑到您的 rand() 函数只返回整数,设置断点并探测滑动值。它似乎总是具有相同的价值。使 rand() 函数更好地用于更广泛的统计分布。有许多来源可以生成随机整数,例如线性同余方法等。

此外,应该对数组的每个值循环比较。

相关内容

  • 没有找到相关文章

最新更新