문제는 입력 값이 0~9까지의 숫자가 각각 한 번 씩만 사용된 것인지 확인하는 함수를 구하시오. 이건데

별거없고 그냥 함 읽어봐 머리회전 좀 하자


#include <stdio.h>


typedef struct Thdata {

int *arr;

int length;

}Thdata;


// 입력 값이 0~9까지의 숫자가 각각 한 번 씩만 사용된 것인지 확인하는 함수를 구하시오.

void test_function(void*param) {


Thdata *a;

a = param;


printf("length is %d", a->length);

int i, j;

int check[10] = { 0, };


printf("%d\n", a->length);


//check 배열에 중복된 거 입력

for (i = 0; i < a->length; i++) {

for (j = 0; j < 10; j++) {

if (a->arr[i] == j) {

check[j] += 1;


}

}

}


//check 배열을 확인해서 출력

for (i = 0; i < 10; i++) {

if (check[i] > 1) {

printf("[%d] is duplication!\n", i);

}

}

}

int main() {

int i;

Thdata array[5];

int lenght[5];

int *ptr[5];


int arr1[] = { 0,1,2,3,4,5,6,7,8,9 };

int arr2[] = { 0,1,2,3,4 };

int arr3[] = { 0,1,2,3,4,5,6,7,8,9,0 };

int arr4[] = { 6,7,8,9,0,1,2,3,4,5 };

int arr5[] = { 0,1,2,3,2,2,4,5,6,7,8,9 };


ptr[0] = arr1;

ptr[1] = arr2;

ptr[2] = arr3;

ptr[3] = arr4;

ptr[4] = arr5;


lenght[0] = sizeof(arr1) / sizeof(int);

lenght[1] = sizeof(arr2) / sizeof(int);

lenght[2] = sizeof(arr3) / sizeof(int);

lenght[3] = sizeof(arr4) / sizeof(int);

lenght[4] = sizeof(arr5) / sizeof(int);


for (i = 0; i < 5; i++) {

array[i].arr = ptr[i];

array[i].length = lenght[i];

}


//void형으로 넘기는 거 연습해봄

//스레드 프로그래밍할때 pthread_create의 인자로 (void*)형 매개변수를 요구하기 때문에..

for (i = 0; i < 5; i++) {

test_function((void*)&array[i]);

}


return 0;

}