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

Đếm các phần tử riêng biệt trong một mảng trong C ++

Chúng tôi được cung cấp một mảng không được sắp xếp có kích thước bất kỳ chứa các phần tử lặp lại và nhiệm vụ là tính số lượng các phần tử riêng biệt trong một mảng.

Mảng là một loại cấu trúc dữ liệu có thể lưu trữ một tập hợp tuần tự có kích thước cố định của các phần tử cùng kiểu. Mảng được sử dụng để lưu trữ một tập hợp dữ liệu, nhưng thường hữu ích hơn nếu coi một mảng là một tập hợp các biến cùng kiểu.

Ví dụ

Input− int arr[] = {1, 1, 2, 3, 3, 4, 4}
Output − count is 4

Giải thích - Trong mảng đã cho có 4 phần tử riêng biệt và đó là 1, 2, 3, 4 nhưng kích thước của mảng là 7 vì nó chứa các phần tử lặp lại và nhiệm vụ của chúng ta là loại bỏ các phần tử trùng lặp và sau đó đếm các phần tử của mảng.

Input − int arr[] = {1, 2, 3, 4, 5, 5, 5, 5}
Output − count is 5

Giải thích - Trong mảng đã cho có 5 phần tử riêng biệt và đó là 1, 2, 3, 4 và 5 nhưng kích thước của mảng là 8 vì nó chứa các phần tử lặp lại và nhiệm vụ của chúng ta là loại bỏ các phần tử trùng lặp và sau đó đếm các phần tử của mảng.

Phương pháp tiếp cận được sử dụng trong chương trình dưới đây như sau

Sử dụng hàm sắp xếp ()

  • Tạo một mảng giả sử, arr []

  • Tính độ dài của mảng bằng cách sử dụng hàm length () sẽ trả về giá trị aninteger theo các phần tử trong mảng.

  • Gọi hàm sắp xếp và chuyển mảng và kích thước của mảng làm tham số.

  • Lấy một biến tạm thời sẽ lưu trữ số lượng các phần tử riêng biệt.

  • Bắt đầu một vòng lặp từ với i đến 0 cho đến khi tôi nhỏ hơn kích thước của một mảng

  • Bên trong vòng lặp, chạy while i

  • Trong khi đó, hãy tăng giá trị của i

  • Và bên trong cho, tăng giá trị của số lượng

  • Số lần trả lại

  • In kết quả.

Không cần phân loại

  • Tạo một mảng giả sử, arr []

  • Tính độ dài của một mảng bằng cách sử dụng hàm length () sẽ trả về giá trị số nguyên theo các phần tử trong mảng.

  • Lấy một biến tạm thời sẽ lưu trữ số lượng các phần tử riêng biệt.

  • Bắt đầu một vòng lặp for với i đến 1 cho đến khi tôi nhỏ hơn kích thước của một mảng

  • Bên trong vòng lặp, đặt j thành 0 và bắt đầu một vòng lặp khác với j đến 0 và j lessthan i và số tăng j wth 1

  • Bên trong vòng lặp này, hãy kiểm tra xem arr [i] =arr [j] rồi ngắt

  • Trong vòng lặp này, hãy kiểm tra xem i =j rồi tăng số đếm lên 1

  • Số lần trả lại

  • In kết quả. R

Ví dụ

Với sắp xếp

#include <algorithm>
#include <iostream>
using namespace std;
int distinct_elements(int arr[], int n){
   // Sorting the array
   sort(arr, arr + n);
   // Traverse the sorted array
   int count = 0;
   for (int i = 0; i < n; i++){
      // Moving the index when duplicate is found
      while (i < n - 1 && arr[i] == arr[i + 1]){
         i++;
      }
      count++;
   }
   return count;
}
// Main Function
int main(){
   int arr[] = { 3, 6, 5, 8, 2, 3, 4 };
   int n = sizeof(arr) / sizeof(arr[0]);
   cout <<"count is "<<distinct_elements(arr, n);
   return 0;
}

Đầu ra

Nếu chúng ta chạy đoạn mã trên, chúng ta sẽ nhận được kết quả sau -

Số lượng
count is 6

Ví dụ

Không cần sắp xếp

#include <iostream>
using namespace std;
int countDistinct(int a[], int size){
   int i, j, count = 1;
   for (i = 1; i < size; i++){
      for (j = 0; j < i; j++){
         if (a[i] == a[j]){
            break;
         }
      }
      if (i == j){
         count++;
      }
   }
   return count;
}
// Main function
int main(){
   int a[] = { 3, 6, 5, 8, 2, 3, 4 };
   int size = sizeof(a) / sizeof(a[0]);
   cout << "count is "<<countDistinct(a, size);
   return 0;
}

Đầu ra

Nếu chúng ta chạy đoạn mã trên, chúng ta sẽ nhận được kết quả sau -

Số lượng
count is 6