Tách 1 mảng nguyên thành 2 mảng chẵn và lẻ

Yêu cầu:

–  Viết chương trình tách 1 mảng các số nguyên thành 2 mảng B và C, sao cho mảng B chứa toàn số lẻ và mảng C chứa toàn số chẵn.

Ví dụ: Mảng ban đầu: 1 3 8 2 7 5 9 0 10
Mảng a: 1 3 7 5 9
Mảng b: 8 2 0 10

Thuật toán:

– Khai báo 2 mảng để chứa phần tử chẵn và lẻ.

– Duyệt mảng ban đầu để tách phần tử chẵn và lẻ vào 2 mảng tương ứng.

Code:

/************************************************************
* Author: VNCODING
* History 
* 2014/10/31 first create VNCODING
*************************************************************/
#include "stdio.h"
#include "conio.h"
#define MAX_SIZE 100

void split_arr(int A[], int n, int B[], int* m, int C[], int *k);
void print_arr(int A[], int n, char name_arr);

void main()
{
    int A[] = {1, -8, 2, 2, 3, 5, 23, 13, 44};
    int n = sizeof(A)/sizeof(int);
    int m = 0,k = 0;
    int B[MAX_SIZE];
    int C[MAX_SIZE];

    split_arr(A, n, B, &m, C, &k);
    print_arr(A, n, 'A');
    print_arr(B, m, 'B');
    print_arr(C, k, 'C');
    getch();
}

void split_arr(int A[], int n, int B[], int* m, int C[], int *k)
{
    int i, j;
    for(i = 0; i < n; i++)
    {
        if(A[i]%2 != 0) // odd number
        {
            B[(*m)++] = A[i];
        }
        else //even number
        {
            C[(*k)++] = A[i];
        }
    }
}

void print_arr(int A[], int n, char name_arr)
{
    int i;
    if(n == 0)
    {
        printf("\nArray %c is empty", name_arr);
        return;
    }
    for(i = 0; i < n; i++)
    {
        switch(name_arr)
        {
        case 'A':
        case 'a':
            printf("\nA[%d] = %d", i, A[i]);
            break;
        case 'B':
        case 'b':
            printf("\nB[%d] = %d", i, A[i]);
            break;
        case 'C':
        case 'c':
            printf("\nC[%d] = %d", i, A[i]);
        }
    }
}

Kết quả:

A[0] = 1
A[1] = -8
A[2] = 2
A[3] = 2
A[4] = 3
A[5] = 5
A[6] = 23
A[7] = 13
A[8] = 44

B[0] = 1
B[1] = 3
B[2] = 5
B[3] = 23
B[4] = 13

C[0] = -8
C[1] = 2
C[2] = 2
C[3] = 44

Be the first to comment

Leave a Reply

Your email address will not be published.

*