Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

องค์ประกอบอาร์เรย์ที่ปรากฏมากกว่าหนึ่งครั้งใน C?


อาร์เรย์ เป็นคอนเทนเนอร์ขององค์ประกอบของชนิดข้อมูลเดียวกัน ความยาวต้องกำหนดไว้ล่วงหน้า และองค์ประกอบสามารถปรากฏในลำดับใดก็ได้และหลายครั้งในอาร์เรย์ ดังนั้นในโปรแกรมนี้ เราจะพบองค์ประกอบที่ปรากฏมากกว่าหนึ่งครั้งในอาร์เรย์

คำอธิบายปัญหา − เราได้ให้อาร์เรย์ arr[] ซึ่งเราต้องค้นหาว่าองค์ประกอบใดที่แอปพิมพ์ซ้ำในอาร์เรย์เพื่อพิมพ์

มาดูตัวอย่างเพื่อทำความเข้าใจสิ่งนี้กันดีกว่า

ตัวอย่าง

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

คำอธิบาย

เรามีอาร์เรย์ arr ซึ่งมีองค์ประกอบบางอย่างในตอนแรก เราจะเปรียบเทียบองค์ประกอบจากองค์ประกอบถัดไปในฟังก์ชันที่ซ้ำกัน ซึ่งใช้เพื่อค้นหาองค์ประกอบที่ซ้ำกันในอาร์เรย์ ในฟังก์ชั่นซ้ำเราใช้การวนซ้ำเพื่อค้นหาองค์ประกอบที่ซ้ำกันในอาร์เรย์ที่กำหนด เราจะใช้เงื่อนไขอื่นเพื่อตรวจสอบการนับองค์ประกอบอาร์เรย์จากองค์ประกอบอาร์เรย์ที่เกิดขึ้นครั้งเดียว การนับจะเป็น 1 หากเกิดขึ้นมากกว่าหนึ่งครั้ง จำนวนจะเพิ่มขึ้นตามลำดับหากนับมากกว่า 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