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

Chương trình C ++ cho Chỉ số mảng có cùng số lượng số chẵn hoặc lẻ ở cả hai phía?

Tìm chỉ mục mảng có cùng số lượng số chẵn hoặc số lẻ là một số có số lượng bằng nhau của một trong hai số hoặc số lẻ ở cả hai phía của nó, tức là số ở bên trái =số bên phải.

Ở đây, chúng tôi cần một vài định nghĩa liên quan đến khái niệm,

Mảng - Một vùng chứa các phần tử của cùng một kiểu dữ liệu.

Chỉ mục mảng - Vị trí của một phần tử được gọi là chỉ số của nó. Chỉ mục của mảng luôn bắt đầu từ 0.

Số chẵn - Một số chia hết cho 2.

Số lẻ - Một số không chia hết cho 2.

Một số nguyên có thể là một số chẵn hoặc một số lẻ.

Bây giờ, chúng ta hãy xem một ví dụ sẽ làm cho khái niệm rõ ràng hơn.

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

Giải thích

Tại chỉ mục 2, có một số lẻ ở bên trái và một số lẻ ở bên phải.

Chúng ta có một mảng n số nguyên trong đó để tìm chỉ số của phần tử mảng sao cho nó có số chẵn là số chẵn ở phía bên trái và số phần tử chẵn ở phía bên phải của nó hoặc chúng ta phải tìm tần số của số lẻ. số phần tử ở phía bên trái của nó bằng tần số của số lẻ phần tử trong đó ở phía bên phải nếu không có điều kiện như vậy, vì vậy chúng ta phải viết ok in -1 nếu có loại điều kiện thì chúng ta phải in chỉ mục của nó

Thuật toán

Để tính chỉ số của phần tử có đếm số chẵn hoặc lẻ ở cả hai phía, chúng ta cần tìm số phần tử ở bên trái và bên phải của phần tử đã cho.

Cho mảng arr [], n số phần tử của mảng.

Step 1 : For i -> 0 to n, follow step 2 - 5:
Step 2: initialise e_l, o_l, e_r, o_r to 0.
Step 3: for j -> o to i
   Step 3.1 : count values for e_l and o_l.
Step 4: for j -> i+1 to n
   Step 4.1 : count values for e_r and o_r.
Step 5: if(e_l == e_r) or (o_l == e_r ) , print i.

Ví dụ

#include <iostream>
using namespace std;
int main() {
   int arr[] = {4, 3, 2, 1, 2};
   int n = 5;
   cout<<"The array is : ";
   for(int i = 0; i < n; i++) {
      cout<<arr[i]<<" ";
   }
   cout<<"\nThe index of the element with the same count of even or odd numbers on both sides = ";
   for (int i = 0; i < n; i++) {
      int o_l = 0, e_l = 0;
      int o_r = 0, e_r = 0;
   for (int j = 0; j < i; j++) {
      if (arr[j] % 2 == 0)
         e_l++;
      else
         o_l++;
   }
   for (int k = n - 1; k > i; k--) {
      if (arr[k] % 2 == 0)
         e_r++;
      else
         o_r++;
   }
   if (e_r == e_l || o_r == o_l)
      cout<<i<<endl;
   }
   return 0;
}

Đầu ra

The array is : 4 3 2 1 2
The index of the element with the same count of even or odd numbers on both sides = 2