Hi, I am

Ngô Tôn

I am a programmer.

Home / Programming / C/C++ / Nối 2 mảng số nguyên

Nối 2 mảng số nguyên

Yêu cầu:

– Cho 2 mảng số nguyên a và b kích thước lần lượt là n và m. Viết chương trình nối 2 mảng trên thành mảng c theo nguyên tắc chẵn ở đầu mảng và lẻ ở cuối mảng.

Ví dụ: Mảng a: 3 2 7 5 9
Mảng b: 1 8 10 4 12 6
Mảng c: 6 12 4 10 2 8 3 1 7 5 9

Thuật toán:

 

Code:

/************************************************************
#include <stdio.h>
#include <conio.h>
#define MAX_SIZE 100

#define MAX(a,b) (((a)>(b))?(a):(b))

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

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

merge_arr(A, n, B, m, C, &l);

print_arr(C, l, 'C');

getch();
}

void merge_arr(int A[], int n, int B[], int m, int C[], int *l)
{
int i, j = 0, k = m + n - 1;
for(i = 0; i < MAX(n, m); i++)
{
if(A[i]%2 == 0 && i < n)
C[j++] = A[i];
if(B[i]%2 == 0 && i < m)
C[j++] = B[i];
if(A[i]%2 != 0 && i < n)
C[k--] = A[i];
if(B[i]%2 != 0 && i < m)
C[k--] = B[i];
}
*l = (m + n);
}
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ả:

About ngoton

Ngô Tôn is a programmer with passion for tailored software solutions. Comes with 7+ years of IT experience, to execute beautiful front-end experiences with secure and robust back-end solutions.

Check Also

Xây dựng hàm bạn để tính diện tích hình chữ nhật

Yêu cầu: Xây dựng hàm bạn để tính diện tích hình chữ nhật Code: Giải …

Leave a Reply

avatar
  Subscribe  
Notify of