2012-05-21 2 views
1

나는 이것이 hw 질문과 같이 보일지도 모른다는 것을 안다. 그리고 이것이 나의 학습 운동이기 때문에 그것을 나의 것으로 대우해야한다.여러 배열에 특정 값이 존재하는지 테스트하는 가장 쉬운 방법은 무엇입니까?

여러 배열에 특정 값이 있는지 테스트하는 가장 쉬운 방법은 무엇입니까? 예를 들어

:

의사 코드

4하지 exis를 않기 때문에, 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; 
} 

에있는

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 

배열 a에 있습니다. 하지만 궁극적으로 테스트 할 각 배열에 대해 for 루프를 만들어야합니까? 감사합니다

+1

if (a [i] = 4) {fndA = 1;}'당신이 생각하는대로하지 않습니다. 제 생각에'if (a [i] == 4) {fndA = 1;}' – Corbin

+0

@ 코빈 수정. 그것을 가리키는 thx. C는 제 첫 언어가 아닙니다. –

답변

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; 
} 
+0

근심을 위해서, for-loop에서 'int i'를 분리 한 이유는 무엇입니까? –

+2

for 루프의 @hydroparadise 선언은 C99 이후에서만 지원됩니다. 나는 그것을 보편적으로 만들기 위해 분리되어 있다고 생각합니다. –

+1

그래, 나는 (더 멋진) C99 문법을 사용하면 누군가가 정확히 주석을 달았을 것이라고 확신한다 : p – ThiefMaster

0

나는 int와 배열을 취해 true 또는 false를 반환하는 함수를 만들 것입니다. 그 다음 3 명은 함께.

첫 번째 루프 중 하나가 조건에서 false를 반환하면 나중에 루프를 호출하지 않는 이점이 있습니다.

2

예. 작성한 코드는 기본적으로 사용자가 수행 할 작업입니다. 일반적으로 배열을 집합으로 취급하는 것으로 보이며이 경우 집합의 서명이있는 추상 데이터 형식이라고 생각할 수 있습니다. 대신에 이러한 배열을 다른 방법으로 구현했다면 member() 함수를 추상화하여 일반적으로 O (log (n)) (트리 기반 구현의 경우)보다 낮은 실행 시간을 가질 수 있습니다. 그러나 네가 무엇을 하든지, 당신은 member() 함수를 통해 AND를하고 싶을 것입니다.

관련 문제