2014-11-19 3 views
0

다음과 같은 프로그램을 만들려고합니다. 배열의 길이를 입력하라는 메시지가 표시됩니다. 그런 다음 배열이 만들어지고 임의의 숫자로 채워지며, 그 길이는 사용자가 처음에 지정한 것입니다. 그 후 배열의 어떤 숫자가 짝수인지를 결정하는 getEvenNumbers이라는 함수를 생성해야합니다. 완료되면 int maingetEvenNumbers을 호출하고 발견 된 모든 짝수를 인쇄합니다. 여기에 내가 지금까지 가지고있는 코드가 있습니다 :배열에있는 모든 짝수를 반환하십시오.

#include <stdio.h> 
#include <stdlib.h> 
#include <time.h> 

void getEvenNumbers(int *, int *); 

int main() 
{ 
    int i, j, k, N, w, size, *tab, *tabPtr = 0, *sizePtr = 0; 

    printf("Enter the desired length of the array: "); 
    scanf("%d", &N); 

    size = N; 

    sizePtr = &size; 

    tab = (int *)malloc(sizeof(int)*size); 

    srand(time(0)); 

    for(i = 0; i < size; i++) 
    { 
     j = rand(); 
     tab[i] = j; 
    } 

    tabPtr = &tab[0]; 

    printf("The array created is:\n"); 
    for(k = 0; k < size; k++) 
     printf("%d\t", *(tabPtr+k)); 

    printf("\n\n"); 

    getEvenNumbers(tabPtr, sizePtr); 
    printf("The pair numbers are:\n"); 
    for(w = 0; w < *sizePtr; w++) 
     printf("%d\t",*(tabPtr+w)); 

    return 0; 
} 

void getEvenNumbers(int *tab, int *sizePtr) 
{ 
    int i = 0, w = 0; 

    for(i = 0; i < *sizePtr; i++) 
    { 
     if(tab[i]%2 == 0) 
     { 
      tab[w] = tab[i]; 
      w++; 
     } 
    } 
} 

임의의 주어진 길이의 무작위 배열을 성공적으로 생성했습니다. 그러나, 그 배열에있는 모든 짝수를 반환하는 데 어려움을 겪고 있습니다. 누군가가 왜 짝수를 반환하지 않는지에 대해 밝힐 수 있습니까?

+0

"페어 번호"는 무엇을 의미합니까? – BG100

+0

죄송합니다, 실수를했습니다. 제가 진정으로 말하고자하는 것은 "짝수"였고 쌍은 아니 었습니다. –

답변

0

편집 : 미안합니다. C#이 아니라 C를 사용하고 있다는 것을 간과합니다. 나는 그것을 시도 할 것이다. 여기 있네!

int[] getEvenNumbers(int numbers[], int count) 
{ 
    for (i = 0; i < count; i++) 
    { 
     if (numbers[i] % 2 == 0) 
     { 
      printf("%d \t", array[i]); 
     } 
    } 
} 
+0

다른 방법을 알고 있지만 포인터를 사용하고 있습니까? 감사! –

+0

숫자 [] 대신 * 숫자를 전달할 수도 있으며 같은 방식으로 작동해야합니다. –

관련 문제