Tìm Phần Tử Lớn Nhất Trong Mảng C
Có thể bạn quan tâm
Hướng dẫn cách tìm phần tử trong mảng C. Bạn sẽ học được cách tìm phần tử lớn nhất trong mảng C, cách tìm vị trí phần tử lớn nhất trong mảng C, cách tìm phần tử lớn thứ hai trong mảng C, cũng như cách tìm phần tử chẵn lớn nhất trong mảng sau bài học này.
Tìm phần tử lớn nhất trong mảng C
Để tìm phần tử lớn nhất trong mảng C, chúng ta sử dụng tới logic mà Kiyoshi đã hướng dẫn trong bài: Tìm max và min trong mảng C
Ý tưởng ở đây là giả sử max (giá trị lớn nhất của mảng) là số đầu tiên của mảng. Chúng ta sẽ lấy lần lượt các số còn lại trong mảng đem so sánh với max, nếu số này lớn hơn max thì đổi giá trị của max thành số đó. Và làm như thế cho tới số cuối cùng trong mảng được kiểm tra thì sẽ ra phần tử lớn nhất trong mảng ban đầu.
Và chúng ta viết hàm tìm phần tử lớn nhất trong mảng C trong chương trình như sau:
| #include <stdio.h>#include <assert.h>/*Hàm tìm phần tử lớn nhất trong mảng C*/void maxElement(const int* array, size_t size){ /*Kiểm tra và báo lỗi nếu đối số truyền vào không thoả mãn điều kiện chạy hàm*/ assert(array != NULL); assert(size >= 1); //Giả định giá trị lớn nhất là giá trị đầu tiên của mảng. int max = array[0]; /*So sánh từng phần tử trong mảng với giá trị đầu tiên để tìm ra giá trị lớn nhất*/ for (size_t i = 1; i < size; ++i) { if (max < array[i]) { //Thay đổi giá trị max nếu tìm ra số lớn hơn max = array[i]; } } printf("max= %d\n", max);}int main(void){ int array[100], n; printf(">>Nhap so phan tu: "); scanf("%d", &n); printf(">>Nhap phan tu:\n"); for (int i = 0; i < n; i++) scanf("%d", &array[i]); /*Tìm phần tử lớn nhất trong mảng C*/ maxElement(array,n); return 0;} |
Kết quả phép tìm phần tử lớn nhất trong mảng C như sau:
| >>Nhap so phan tu: 6>>Nhap phan tu:17138560max= 56 |
Tìm vị trí phần tử lớn nhất trong mảng C
Chúng ta cũng có thể biến tấu hàm ở trên và tìm vị trí phần tử lớn nhất trong mảng C, bằng cách thay vì trả về giá trị của phần tử lớn nhất tìm thấy thì chúng ta sẽ trả về cả index của phần tử đó.
Và chúng ta viết hàm tìm vị trí phần tử lớn nhất trong mảng C trong chương trình như sau:
| #include <stdio.h>#include <assert.h>/*Hàm tìm vị trí phần tử lớn nhất trong mảng C*/void maxElement(const int* array, size_t size){ /*Kiểm tra và báo lỗi nếu đối số truyền vào không thoả mãn điều kiện chạy hàm*/ assert(array != NULL); assert(size >= 1); //Giả định vị trí phần tử lớn nhất là phần tử đầu tiên của mảng. int max = array[0]; int max_index= 0; /*So sánh từng phần tử trong mảng với giá trị đầu tiên để tìm ra giá trị lớn nhất*/ for (size_t i = 1; i < size; ++i) { if (max < array[i]) { //Thay đổi giá trị lớn nhất nếu tìm ra số lớn hơn max = array[i]; max_index =i; } } printf("Phan tu lon nhat= %d\n", max); printf("Vi tri phan tu lon nhat= %d\n", max_index);}int main(void){ int array[100], n; printf(">>Nhap so phan tu: "); scanf("%d", &n); printf(">>Nhap phan tu:\n"); for (int i = 0; i < n; i++) scanf("%d", &array[i]); /*Tìm phần tử lớn nhất trong mảng C*/ maxElement(array,n); return 0;} |
Kết quả phép tìm phần tử lớn nhất trong mảng C như sau:
| >>Nhap so phan tu: 6>>Nhap phan tu:17138560Phan tu lon nhat= 56Vi tri phan tu lon nhat= 4 |
Tìm phần tử lớn thứ hai trong mảng C
Để tìm phần tử lớn thứ hai trong mảng C, chúng ta sẽ dùng tới phương pháp Tìm phần tử lớn nhất và nhỏ nhất trong mảng C bằng cách sắp xếp mảng mà Kiyoshi đã hướng dẫn trong bài: Tìm max và min trong mảng C
Ý tưởng ở đây là chúng ta sẽ sắp xếp mảng theo thứ tự giảm dần. Và sau khi sắp xếp thì phần tử lớn nhất mảng là phần tử đầu tiên, và phần tử lớn thứ 2 chính là phần tử đứng thứ 2 trong mảng.
Một cách tổng quát thì chúng ta cũng có thể tìm phần tử lớn thứ n trong mảng bằng phương pháp sắp xếp này.
Về sắp xếp mảng trong C thì chúng ta sẽ dùng tới phương pháp mà Kiyoshi đã hướng dẫn trong bài: Sắp xếp mảng trong C
Sau đây là ví dụ về cách tìm phần tử lớn thứ hai trong mảng C bằng cách sắp xếp mảng giảm dần.
| #include <stdio.h>#include <stdlib.h>/*Định nghĩa macro SIZE_OF_ARRAY để lấy độ dài (số phần tử) trong mảng chỉ định*/#define SIZE_OF_ARRAY(array) (sizeof(array)/sizeof(array[0]))/*Tạo hàm so sánh giảm dần sử dụng trong hàm qsort*/int compareIntDesc(const void* a, const void* b){ int aNum = *(int*)a; int bNum = *(int*)b; return bNum - aNum;}int main(void){ int array[] = {5, 4, 7, 2, 8, 7, 3}; int length= SIZE_OF_ARRAY(array); /*Sử dụng hàm qsort để sắp xếp mảng giảm dần*/ qsort(array, length, sizeof(int), compareIntDesc); /*Phần tử lớn thứ 2 chính là phần tử đứng thứ 2 trong mảng sau sắp xếp*/ printf("Phan tu lon nhat trong mang= %d\n", array[0]); printf("Phan tu lon thu 2 trong mang= %d\n", array[1]); return 0;} |
Kết quả phép tìm phần tử lớn thứ hai trong mảng C như sau:
| Phan tu lon nhat trong mang= 8Phan tu lon thu 2 trong mang= 7 |
Tìm phần tử chẵn lớn nhất trong mảng
Chúng ta cũng có thể áp dụng phương pháp tìm phần tử lớn nhất và nhỏ nhất trong mảng C bằng cách sắp xếp mảng ở trên để tìm phần tử chẵn lớn nhất trong mảng
Ý tưởng ở đây là chúng ta sẽ sắp xếp mảng theo thứ tự giảm dần. Và sau khi sắp xếp thì các phần tử sẽ được sắp xếp theo thứ tự từ lớn nhất đến nhỏ nhất, tính từ đầu mảng. Khi đó, chỉ cần chúng ta tìm ra phần tử chẵn đầu tiên tính từ đầu mảng, thì đó chính là phần tử chẵn lớn nhất trong mảng cần tìm.
Một cách tương tự thì chúng ta cũng có thể tìm phần tử lẻ lớn nhất trong mảng theo cách này.
Để kiểm tra một phần tử trong mảng là chẵn hay lẻ, chúng ta sẽ dùng tới một trong hai phương pháp mà Kiyoshi đã hướng dẫn trong bài: Kiểm tra số chẵn lẻ trong C
Và để sắp xếp mảng trong C thì chúng ta sẽ dùng tới phương pháp mà Kiyoshi đã hướng dẫn trong bài: Sắp xếp mảng trong C
Sau đây là ví dụ về cách tìm phần tử phần tử chẵn lớn nhất và phần tử lẻ lớn nhất trong mảng bằng cách sắp xếp mảng giảm dần.
| #include <stdio.h>#include <stdlib.h>/*Định nghĩa macro SIZE_OF_ARRAY để lấy độ dài (số phần tử) trong mảng chỉ định*/#define SIZE_OF_ARRAY(array) (sizeof(array)/sizeof(array[0]))/*Tạo hàm kiểm tra số chẵn lẻ trong C*/int check_odd_even(int n){ //flag = 1 => số lẻ //flag = 0 => số chẵn int flag = 1; if( n % 2 == 0 ) flag= 0; return flag; }/*Tạo hàm so sánh giảm dần sử dụng trong hàm qsort*/int compareIntDesc(const void* a, const void* b){ int aNum = *(int*)a; int bNum = *(int*)b; return bNum - aNum;}int main(void){ int array[] = {5, 4, 7, 2, 8, 7, 3}; int length= SIZE_OF_ARRAY(array); /*Sử dụng hàm qsort để sắp xếp mảng giảm dần*/ qsort(array, length, sizeof(int), compareIntDesc); /*Phần tử phần tử chẵn lớn nhất trong mảng chính là phần tử chẵn đầu tiên*/ for (size_t i = 0; i < length; ++i) { int x = array[i]; int check = check_odd_even(x); if (check == 0) { //Tìm thấy phần tử phần tử chẵn lớn nhất printf("Phan tu chan lon nhat trong mang= %d\n", array[i]); break; } } /*Phần tử phần tử lẻ lớn nhất trong mảng chính là phần tử lẻ đầu tiên*/ for (size_t i = 0; i < length; ++i) { int x = array[i]; int check = check_odd_even(x); if (check == 1) { //Tìm thấy phần tử phần tử lẻ lớn nhất printf("Phan tu le lon nhat trong mang= %d\n", array[i]); break; } } return 0;} |
Kết quả chương trình tìm phần tử phần tử chẵn lớn nhất và phần tử lẻ lớn nhất trong mảng như sau:
| Phan tu chan lon nhat trong mang= 8Phan tu le lon nhat trong mang= 7 |
Tổng kết
Trên đây Kiyoshi đã hướng dẫn bạn cách tìm phần tử lớn nhất trong mảng 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.
URL Link
https://laptrinhcanban.com/c/lap-trinh-c-co-ban/mang-trong-c/tim-phan-tu-lon-nhat-trong-mang-c/
Từ khóa » Tìm Số Lẻ Lớn Nhất Trong Mảng C
-
Viết Hàm Tìm Số Lẻ Lớn Nhất Có Trong Mảng | How Kteam
-
Tìm Giá Trị Có Toàn Chữ Số Lẻ Và Có Giá Trị Lớn Nhất Trong Mảng
-
Tìm Số Toàn Số Lẻ Lớn Nhất Trong Mảng - Cộng đồng C Việt
-
Số Lẻ Lớn Nhất Mảng 1 Chiều - IT's World
-
Tìm ước Số Lẻ Lớn Nhất Của Số Nguyên Dương N Bằng C / C++
-
Tìm ước Số Lẻ Lớn Nhất Của Một Số Trong C - Lập Trình Từ Đầu
-
Tìm Vị Trí Số Dương Lẻ Lớn Nhất Trong Mảng 1 Chiều
-
Tìm Số Chẵn Lớn Nhất/nhỏ Nhất Trong Mảng
-
[C] 167 Tìm Giá Trị Toàn Là Chữ Số Lẻ Và Lớn Nhất Trong Những Số Thỏa ...
-
Tìm Phần Tử Có Giá Trị Lớn Nhất Và Có Chứa Toàn Chữ Số Lẻ | VnCoding
-
Tìm ước Số Lẻ Lớn Nhất Của Số Nguyên Dương N Bằng C / C++