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

In các phần tử riêng biệt đã được sắp xếp của mảng bằng ngôn ngữ C

Được đưa ra với một mảng các phần tử số nguyên, nhiệm vụ là xóa các giá trị trùng lặp và in các phần tử riêng biệt theo cách được sắp xếp.

Dưới đây là một mảng lưu trữ các giá trị kiểu số nguyên theo kiểu 4, 6, 5, 3, 4, 5, 2, 8, 7 và 0 ngay bây giờ, kết quả sẽ in ra các phần tử được sắp xếp là 0, 2, 3, 4, 4, 5, 5, 6, 7 và 8 nhưng kết quả này vẫn chứa các giá trị trùng lặp 4 và 5 cần được loại bỏ và kết quả cuối cùng sẽ là 0, 2, 3, 4, 5, 6, 7 và 8

In các phần tử riêng biệt đã được sắp xếp của mảng bằng ngôn ngữ C

Ví dụ

Input: array[] = {4, 6, 5, 3, 4, 5, 2, 8, 7, 0}
Output: 0 2 3 4 5 6 7 8

Giải thích

Vì vậy, để đạt được kết quả, chúng tôi sẽ

  • Lấy các phần tử riêng biệt và lưu trữ nó trong một mảng khác, array1.
  • Sắp xếp mảng 1.
  • In các giá trị của mảng 1.

Thuật toán

START
   STEP 1: DECLARE VARIABLES i, j, array1[size], temp, count = 0
   STEP 2: LOOP FOR i = 0 AND i < size AND i++
      LOOP FOR j = i+1 AND j < size AND j++
         IF array[i] == array[j]) then,
            break
         END IF
      END FOR
      IF j == size then,
         ASSIGN array1[count++] WITH array[i]
      END IF
   END FOR
   STEP 3: LOOP FOR i = 0 AND i < count-1 AND i++
      LOOP FOR j = i+1 AND j < count AND j++
         IF array1[i]>array1[j] then,
            SWAP array1[i] AND array[j]
         END IF
      END FOR
   END FOR
   STEP 4: PRINT array1
STOP


Ví dụ

#include <stdio.h>
/* Prints distinct elements of an array */
void printDistinctElements(int array[], int size) {
   int i, j, array1[size], temp, count = 0;
   for(i = 0; i < size; i++) {
      for(j = i+1; j < size; j++) {
         if(array[i] == array[j]) {
            /* Duplicate element found */
            break;
         }
      }
      /* If j is equal to size, it means we traversed whole
      array and didn't found a duplicate of array[i] */
      if(j == size) {
         array1[count++] = array[i];
      }
   }
   //sorting the array1 where only the distinct values are stored
   for ( i = 0; i < count-1; i++) {
      for ( j = i+1; j < count; j++) {
         if(array1[i]>array1[j]) {
            temp = array1[i];
            array1[i] = array1[j];
            array1[j] = temp;
         }
      }
   }
   for ( i = 0; i < count; ++i) {
      printf("%d ", array1[i]);
   }
}
int main() {
   int array[] = {4, 6, 5, 3, 4, 5, 2, 8, 7, 0};
   int n = sizeof(array)/sizeof(array[0]);
   printDistinctElements(array, n);
   return 0;
}

Đầu ra

Nếu chúng ta chạy chương trình trên thì nó sẽ tạo ra kết quả sau.

0 2 3 4 5 6 7 8