我知道这可能看起来像是一个问题,并且应该像我的客人那样对待它,因为这是一次自学练习。
测试mutliple数组中是否存在某些值的最简单方法是什么?
例如:
伪代码
if array a contains a value of 4 and
array b contains a value of 2 and
array c contains a value of 6
then procede to procedure x
到目前为止我在实施方面的内容
#include<stdio.h>
void x(void){/* do stuff */}
int main()
{
char fndA = 0;
char fndB = 0;
char fndC = 0;
int a[5] = {1,2,3,5,6};
int b[5] = {1,2,2,3,4};
int c[5] = {1,3,4,5,6};
for(int i=0;i<5;i++)
{
if(a[i]==4){fndA=1;}
}
//repeat for-loop for b/fndb and c/fndC
if (fndA && fndB && fndC) {x();}
return 0;
}
在此示例中,x()
永远不会被调用,因为数组a
中的4不存在。但是我最终还是要为每个要测试的数组构建一个for
循环吗?感谢
答案 0 :(得分:5)
是。但是你可以显然创建一个循环函数。您需要将数组,其大小和您要查找的元素传递给该函数。
int array_contains_int(int *arr, size_t size, int value) {
int i;
for(i = 0; i < size; i++)
if(arr[i] == value)
return 1;
return 0;
}
答案 1 :(得分:2)
是。你写的代码基本上就是你要做的。通常,您似乎将数组视为集合,在这种情况下,您可以将其视为具有集合签名的抽象数据类型。相反,如果您以其他方式实现了这些数组,则可能能够将member()
函数抽象为具有较低的运行时间,通常为O(log(n))(对于基于树的实现)。但是,是的,无论你做什么,你都希望对member()
函数进行AND。
答案 2 :(得分:0)
我会创建一个带有int和数组的函数,并返回true或false。然后和其中三个在一起。
如果第一个中的一个在条件中返回false,则还有一个额外的好处就是不调用后面的循环。