Tách 1 mảng thành 2 mảng chẵn lẻ C/C++ có CODE mẫu

Cùng với list và vector, mảng có vai trò quan trọng khi xử lý dữ liệu lớn cùng loại. Sau đây hãy cùng TTnguyen giải quyết bài toán tách 1 mảng thành 2 mảng trong ngôn ngữ lập trình C/C++ nhé!

Xem thêm: 

1. Bài toán tách 1 mảng thành 2 mảng chẵn lẻ C++

Đề bài: Hãy viết chương trình nhập vào một dãy số đến khi gặp số 0 thì dừng, sau đó tách các số chẵn và số lẻ ra 2 mảng khác nhau. Tính trung bình cộng các số chẵn dương và trung bình cộng các số lẻ âm.

2. Mô tả thuật toán tách mảng chẵn lẻ

Ý tưởng: Khai báo 2 mảng a[c], b[l] chứa lần lượt các phần tử chẵn và lẻ sau khi tách dãy số nguyên nhập vào từ bàn phím. Tiến hành duyệt mảng a để tính tổng các phần tử chẵn, duyệt mảng b để tính tổng các phần tử lẻ.

2.1. Hàm nhập một dãy số đến khi gặp số 0 thì dừng

do {
cout << "Nhap so nguyen n: ";
cin >> n;
} while (n != 0);

2.2. Thuật toán kiểm tra số chẵn lẻ

Sử dụng dấu % để chia lấy dư. Nếu n chia 2 dư 0 thì n là số chẵn, ngược lại n là số lẻ.

if (n % 2 == 0) {
cout << n << " la so chan";
} else {
cout << n << " la so le";
}

2.3. Hàm tách số chẵn lẻ.

Trong khi nhập vào từ bàn phím dãy số nguyên n thì bạn tiến hành tách số chẵn lẻ. Nếu như n chia hết cho 2 thì gán n vào mảng chẵn ngược lại, nếu n không chia hết cho 2 thì gán n vào mảng lẻ.

do {
  cout << "Nhap so nguyen n: ";
  cin >> n;
  if (n != 0) {
    if (n % 2 == 0) {
      a[c] = n;
      c++;
    } else {
      b[l] = n;
      l++;
    }
  }
} while (n != 0);

2.4. In ra màn hình dãy số chẵn lẻ C++

cout << "Mang cac so chan: ";
for (i = 0; i < c; i++) cout << setw(3) << a[i];
cout << endl;
cout << "Mang cac so le: ";
for (j = 0; j < l; j++) cout << setw(3) << b[j];
cout << endl;

2.5. Tính tổng các số chẵn lẻ

for (i = 0; i < c; i++)
  if (a[i] > 0) {
    demc++;
    tongA = tongA + a[i];
  } for (j = 0; j < l; j++)
  if (b[j] < 0) {
    deml++;
    tongB = tongB + b[j];
  }

2.6. Gộp 2 mảng thành 1 mảng C++

for (int i = 0; i < c + l; i++) {
  if (i < c)
    c[i] = a[i];
  else c[i] = b[i - c];
}

/*
for(i=m+1;i<=n;i++){
    b[i]=c[i-m];
}
*/

3. Code tham khảo chương trình tách các số chẵn lẻ ra 2 mảng khác nhau

#include<bits/stdc++.h>

using namespace std;
int main() {
  int n, i, j, c = 0, l = 0;
  double tbcC, tbcL;
  int a[250], b[250];
  do {
    cout << "Nhap so nguyen n: ";
    cin >> n;
    if (n != 0) {
      if (n % 2 == 0) {
        a[c] = n;
        c++;
      } else {
        b[l] = n;
        l++;
      }
    }
  } while (n != 0);
  cout << "Mang cac so chan: ";
  for (i = 0; i < c; i++) cout << setw(3) << a[i];
  cout << endl;
  cout << "Mang cac so le: ";
  for (j = 0; j < l; j++) cout << setw(3) << b[j];
  cout << endl;
  int demc = 0, deml = 0, tongA = 0, tongB = 0;
  for (i = 0; i < c; i++)
    if (a[i] > 0) {
      demc++;
      tongA = tongA + a[i];
    } for (j = 0; j < l; j++)
    if (b[j] < 0) {
      deml++;
      tongB = tongB + b[j];
    } tbcC = tongA / demc;
  tbcL = tongB / deml;
  cout << "Trung binh cong cac so chan duong la: " << setprecision(2) << tbcC << endl;
  cout << "Trung binh cong cac so le am la: " << setprecision(2) << tbcL;
}

Ok, vậy mình đã hoàn thành bài toán tách 1 mảng thàng 2 mảng chẵn lẻ. Nếu có bất kỳ thắc mắc hoặc sai sót gì thì đừng ngần lại liên hệ với mình nhé! Chúc các bạn học tập tốt

Nguyễn Tiến Trường

Mình viết về những điều nhỏ nhặt trong cuộc sống, Viết về câu chuyện những ngày không có em