30/09/2018, 16:09 
               
            Cách làm ngắn gọn cho bài nối mảng chẵn ở đầu mảng và lẻ ở cuối?
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 83 1 7 5 9
code của mình : http://codepad.org/NZ5t9fi4
#include<iostream>
#include<stdio.h>
#include<math.h>
#include "NhapMang.h"
using namespace std;
#define MAX 100
void NhapMangb(int b[], int &m){
	cout << "nhap so phan tu" << endl;
	cin >> m;
	for (int j = 0; j < m; j++){
		printf("b[%d] = ", j);
		scanf_s("%d", &b[j]);
	}
}
void TachMang(int a[], int n, int b[], int &m, int c[], int &v){
	int i = 0, j = 0, k =0;
	v = 0;
	for (i = 0; i < n; i++){
		if (a[i] % 2 == 0){
			c[v++] = a[i];
			k++;
		}
	}
	for (int j = 0; j < m; j++){
		if (b[j] % 2 == 0){
			c[v++] = b[j];
			k++;
		}
	}
	for (int i = 0; i < n; i++){
		if (a[i] % 2 != 0)
		{
			c[v++] = a[i];
			k++;
		}
	}
	for (int j = 0; j < m; j++){
		if (b[j] % 2 != 0){
			c[v++] = b[j];
			k++;
		}
	}
	for (int v = 0; v <k ; v++){
		cout << c[v] << "	";
	}
}
void main(){
	int a[MAX],b[MAX],c[MAX], n,m,v;
	NhapMang(n,a);
	NhapMangb(b, m);
	
	cout << "ket qua = ";
	TachMang(a, n, b, m, c, v);
	
	system("pause");
}
có cách nào làm khác mà ngắn hơn cách mình làm ko a?
            Bài liên quan
         
               
            




Cũng chẳng biết có ngắn hơn không nhưng post lên bạn tham khảo thử:
swap là gì vậy bạn? mình chưa học đến cái này :ss
Là hoán vị đó bạn, nếu bạn thấy khó hiểu thì có thể sửa lại hàm hoán vị như sau: