Tách mảng âm dương trong C | Laptrinhcanban.com

Tách mảng âm dương trong C

Hướng dẫn cách tách mảng âm dương trong C. Bạn sẽ học được cách viết một chương trình C cơ bản để tách các số âm/dương ra 1 mảng khác từ mảng cho trước sau bài học này.

Tách mảng âm dương trong C

Để tách các số âm/dương ra 1 mảng khác từ mảng cho trước, chúng ta đơn giản chuẩn bị sẵn 2 mảng chứa kết quả phép tách, một mảng để chứa các số âm và một mảng để chứa các số dương được tách ra từ mảng ban đầu.

Và để kiểm tra một số trong mảng là số âm hay số dương, chúng ta đơn giản so sánh số đó với 0, hoặc là sử dụng tới hàm mà Kiyoshi đã giới thiệu trong bài dưới đây:

Và chúng ta viết chương trình tách các số âm/dương ra 1 mảng khác từ mảng cho trước bằng C như sau:

#include <stdio.h>

/*Tạo macro SIZE_OF_ARRAY để lấy độ dài (số phần tử) của mảng chỉ định*/
#define SIZE_OF_ARRAY(array) (sizeof(array)/sizeof(array[0]))

/*Tạo hàm in phần tử trong mảng*/
void show_array(int array[], int length){
for(short i = 0; i < length; i++) printf("%d ", array[i]);
printf("\n");
}

int main(void){
//Khai báo 2 mảng chứa kết quả
int negative_array[100], positive_array[100];

//Khởi tạo mảng cần tách ra các số âm dương
int array[] = {-5, 4, 0 , 1, -2 ,9 , 7,-8};

//Sử dụng macro ở trên để lấy độ dài mảng
int length = SIZE_OF_ARRAY(array);

int negative_count = 0, positive_count = 0;

for (int i = 0; i < length; i++){
//Kiểm tra phần tử là số âm hay dương
//Và gán số tìm thấy vào các mảng âm dương tương ứng
//Cũng như tăng dần số phần tử trong mảng kết quả
if (array[i] < 0) {
negative_array[negative_count]=array[i];
++ negative_count;
} else if (array[i] > 0) {
positive_array[positive_count]=array[i];
++ positive_count;
}
}

//In ra mảng âm dương đã tách ra
show_array(negative_array, negative_count);
show_array(positive_array, positive_count);

return 0;
}

Kết quả của phép tách mảng âm dương trong C như sau:

-5 -2 -8 
4 1 9 7

Tách số dương trong mảng C

Một cách tương tự thì chúng ta có thể tiến hành tách số dương trong mảng C, và bài toán này đơn giản hơn nhiều so với bài toán ở trên, bởi vì chúng ta chỉ cần chuẩn bị một mảng chứa số dương được tách từ mảng ban đầu mà thôi.

Chúng ta viết chương trình như sau:

#include <stdio.h>

/*Tạo macro SIZE_OF_ARRAY để lấy độ dài (số phần tử) của mảng chỉ định*/
#define SIZE_OF_ARRAY(array) (sizeof(array)/sizeof(array[0]))

/*Tạo hàm in phần tử trong mảng*/
void show_array(int array[], int length){
for(short i = 0; i < length; i++) printf("%d ", array[i]);
printf("\n");
}

int main(void){
int positive_array[100];
int array[] = {-5, 4, 0 , 1, -2 ,9 , 7,-8};
int length = SIZE_OF_ARRAY(array);

int positive_count = 0;

for (int i = 0; i < length; i++){

if (array[i] > 0) {
positive_array[positive_count]=array[i];
++ positive_count;
}
}

show_array(positive_array, positive_count);

return 0;
}

Kết quả của phép tách số dương trong mảng C như sau:

4 1 9 7 

Tách mảng a thành 2 mảng b (chứa các số nguyên dương) và c (chứa các số còn lại)

Ứng dụng chương trình ở trên, chúng ta cũng có thể tách mảng a thành 2 mảng b (chứa các số nguyên dương) và c (chứa các số còn lại) bằng C. Tuy nhiên ngoài việc xác định một số là số dương, thì chúng ta cũng cần thêm một xử lý nữa nhằm xác định số đó có phải là số nguyên hay không.

Để kiểm tra một số có phải là số nguyên không, hãy sử dụng tới hàm tự tạo mà Kiyoshi đã giới thiệu trong bài sau:

Và chúng ta viết chương trình tách mảng a thành 2 mảng b (chứa các số nguyên dương) và c (chứa các số còn lại) bằng C như sau:

#include <stdio.h>
#include <math.h>

/*Tạo macro SIZE_OF_ARRAY để lấy độ dài (số phần tử) của mảng chỉ định*/
#define SIZE_OF_ARRAY(array) (sizeof(array)/sizeof(array[0]))

/*Tạo hàm in phần tử trong mảng*/
void show_array(int array[], int length){
for(short i = 0; i < length; i++) printf("%d ", array[i]);
printf("\n");
}

/*Viết hàm kiểm tra số nguyên trong C*/
int check_real_integer_number(float n){
//flag = 1 => là số nguyên
//flag = 0 => không phải là số nguyên

int flag = 1;
if (ceil(n) != floor(n)) flag = 0;
return flag;
}
int main(void){
int positive_array[100];
float array[] = {-5, 4, 0 , 1.2, -2.7 ,9 , 7.3,-8};
int length = SIZE_OF_ARRAY(array);

int positive_count = 0;

for (int i = 0; i < length; i++){
float n = array[i];
//Kiểm tra số đã cho có thoả mãn là số dương, và là số nguyên hay không
//Và gán số tìm thấy vào các mảng âm dương tương ứng
//Cũng như tăng dần số phần tử trong mảng kết quả
if (n > 0 && check_real_integer_number(n) == 1) {
positive_array[positive_count]=array[i];
++ positive_count;
}
}

show_array(positive_array, positive_count);

return 0;
}

Kết quả :

4 9

Tổng kết

Trên đây Kiyoshi đã hướng dẫn bạn cách tách mảng âm dương trong C rồi. Để nắm rõ nội dung bài học hơn, bạn hãy thực hành viết lại các ví dụ của ngày hôm nay nhé.

Và hãy cùng tìm hiểu những kiến thức sâu hơn về C trong các bài học tiếp theo.

HOME>> >>

Profile
きよしです!笑

Tác giả : Kiyoshi (Chis Thanh)

Kiyoshi là một cựu du học sinh tại Nhật Bản. Sau khi tốt nghiệp đại học Toyama năm 2017, Kiyoshi hiện đang làm BrSE tại Tokyo, Nhật Bản.