Computer >> Máy Tính >  >> Lập trình >> lập trình C

Các phần tử mảng xuất hiện nhiều hơn một lần trong C?

Mảng là một vùng chứa các phần tử có cùng kiểu dữ liệu, độ dài cần được xác định trước. Và một phần tử có thể xuất hiện theo bất kỳ thứ tự nào và bất kỳ số lần nào trong một mảng. vì vậy trong chương trình này, chúng ta sẽ tìm thấy các phần tử xuất hiện nhiều lần trong một mảng.

Mô tả sự cố - Chúng tôi đã đưa ra một mảng arr [], trong đó chúng tôi phải tìm phần tử nào đang lặp lại trong mảng mà một ứng dụng in chúng.

Hãy lấy một ví dụ để hiểu rõ hơn về điều này.

Ví dụ,

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

Giải thích

Chúng ta có một mảng arr chứa một số phần tử, trước hết chúng ta sẽ so sánh phần tử với phần tử tiếp theo trong hàm trùng lặp được sử dụng để tìm phần tử lặp lại trong mảng. Trong hàm trùng lặp, chúng ta đang sử dụng vòng lặp để tìm các phần tử trùng lặp trong mảng đã cho, chúng ta sẽ sử dụng điều kiện if else để kiểm tra số lượng các phần tử mảng từ phần tử mảng đã xảy ra một lần thì số lượng sẽ là 1 nếu xảy ra nhiều hơn một lần thì số đếm sẽ được tăng lên tương ứng nếu số lượng nhiều hơn 1 thì phần tử sẽ được in trên màn hình.

Thuật toán

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}

Ví dụ

#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;
}

Đầu ra

The repeat elements of the array are : 21