Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

In các phần tử thiếu trong khoảng 0 – 99

Chương trình sẽ hiển thị các giá trị thiếu từ tập hợp cho trước do người dùng nhập.

Given : array = {88, 105, 3, 2, 200, 0, 10};
Output : 1 4-9 11-87 89-99

Thuật toán

START
STEP 1-> Take an array with elements, bool flag[MAX] to Fale, int i, j, n to size of array
Step 2-> Loop For from I to 0 and i<n and i++
  IF array[i] < 100 && array[i]>=0
    Set flag[array[i]]=true
  End IF
Step 3 -> End For Loop
Step 4 -> Loop For from i to 0 and i<MAX and ++i
  IF flag[i] == false
    Set j=i+1
    Loop While j<MAX && flag[j] == false
      Set j++
    End While
    If j=i+1
      Print i
    End IF
    Else
      Print i and j-1
    End Else
    Set i=j
  End IF
Step 5 -> End For Loop
STOP

Ví dụ

#include <stdio.h>
#define MAX 100

int main(int argc, char const *argv[]) {
  int array[] = {88, 105, 3, 2, 200, 0, 10};
  bool flag[MAX] = { false }; //Initializing all the values of flag as false
  int i, j, n;
  n = sizeof(array)/sizeof(array[0]);
  for (i = 0; i < n; i++) {
    if (array[i] < 100 && array[i]>=0) {
      flag[array[i]] = true; //Making the value of the elements present in an array as true, So missing will remain false
    }
  }
  for (i = 0; i < MAX; ++i) {
    if(flag[i] == false) { //Checking for false values
      j = i+1; //Giving the value of the next iteration
      while(j<MAX && flag[j] == false) //Checking the value of flag[j] is false
        j++;
      if (j==i+1) //For printing the missing number
        printf("%d\n", i);
      else //For printing the missing range
        printf("%d-%d\n", i, j-1);
      i = j; //Initializing the range's last value to start from that number
    }
  }
  return 0;
}

Kết quả

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

1
4-9
11-87
89-99