문제는 입력 값이 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;
}
댓글 0