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
viet cai zchag hieu z ca