Computer >> 컴퓨터 >  >> 프로그램 작성 >> C 프로그래밍

C에서 두 번 이상 나타나는 배열 요소?

<시간/>

배열 동일한 데이터 유형 길이의 요소 컨테이너는 미리 정의해야 합니다. 그리고 요소는 배열에서 임의의 순서와 횟수로 나타날 수 있습니다. 따라서 이 프로그램에서는 배열에서 두 번 이상 나타나는 요소를 찾습니다.

문제 설명 − 배열에서 반복되는 요소를 찾아야 하는 배열 arr[]를 제공하여 앱에서 인쇄할 수 있습니다.

이를 더 잘 이해하기 위해 예를 들어보겠습니다.

Input: arr[] = {5, 11, 11, 2, 1, 4, 2}
Output: 11 2

설명

우리는 배열에서 반복되는 요소를 찾는 데 사용되는 복제 함수의 다음 요소에서 요소를 먼저 비교하는 일부 요소를 포함하는 배열을 가지고 있습니다. 복제 함수에서 우리는 주어진 배열에서 중복 요소를 찾기 위해 루프를 사용하고 있습니다. 배열 요소에서 배열 요소의 개수를 확인하기 위해 else 조건이 한 번 발생한 경우 사용하고 두 번 이상 발생하면 개수는 1이 됩니다. count가 1보다 크면 요소가 화면에 인쇄됩니다.

알고리즘

Input : arr[], n the length of array.
Step 1 : For i -> 0 to n, Follow step 2,
Step 2 : For each element of the array. Do :
   Step 2.1 : For j -> i to n repeat step 2.2 - 2.3.
   Step 2.2 : if (arr[i] == arr[j]) -> print arr[i]
   Step 2.3 : else {// do nothing}

예시

#include <stdio.h>
int main() {
   int arr[] = {21, 87, 212, 109, 41, 21};
   int n=7;
   printf("The repeat elements of the array are : ");
   int *count = (int *)calloc(sizeof(int), (n - 2));
   int i;
   for (i = 0; i < n; i++) {
      if (count[arr[i]] == 1)
         printf(" %d ", arr[i]);
      else
         count[arr[i]]++;
   }
   return 0;
}

출력

The repeat elements of the array are : 21