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: