Thuật toán tìm số chẵn lớn nhất nhỏ hơn mọi giá trị lẻ có trong mảng

1
718
số-chẵn-lớn-nhất-nhỏ-hơn-mọi-giá-trị-lẻsố-chẵn-lớn-nhất-nhỏ-hơn-mọi-giá-trị-lẻ
số-chẵn-lớn-nhất-nhỏ-hơn-mọi-giá-trị-lẻ

Bài toán: Cho mảng một chiều các số nguyên. Hãy viết hàm tìm số chẵn lớn nhất nhỏ hơn mọi giá trị lẻ có trong mảng. Nếu mảng không tồn tại số lẻ nào thì in ra số -1.

Ví dụ:

  • Input:

  • Output:

Ý tưởng tìm số chẵn lớn nhất nhỏ hơn mọi giá trị lẻ trong mảng

  • Ý tưởng là chúng ta sẽ tìm ra số lẻ min có giá trị nhỏ nhất trong mảng. Vậy số min - 1 chính là số chẵn lớn nhất nhỏ hơn mọi giá trị lẻ trong mảng. Nếu ta không tìm được số lẻ nào trong mảng thì ta sẽ trả về giá trị -1.

Xây dựng hàm tìm số lẻ min có giá trị nhỏ nhất trong mảng

  • Đầu tiên ta nên khởi tạo biến min có giá trị thật lớn để có thể tìm được giá trị lẻ nhỏ nhất trong mảng. Tốt nhất là nên dùng một hằng số lớn hơn kiểu int.
  • Ta tiến hành duyệt tất cả các phần tử trong mảng nếu phần tử a[i] vừa mang giá trị lẻ vừa bé hơn giá trị min thì ta gán min = a[i].
  • Sau khi duyệt tất cả các phần nếu giá trị min vẫn bằng giá trị khởi tạo tức là mảng không có phần tử lẻ. Ta tiến hành trả về giá trị -1. Nếu không thì ta trả về giá trị min- 1.
  • Lưu ý nếu ta khởi tạo min = 0 thì ta không thể tìm được giá trị lẻ nhỏ nhất trong mảng được. Cùng hai xem đoạn code sau:

 

Nhưng nếu khởi tạo giá trị min lớn thì có thể khắc phục được lỗi trên

Code tham khảo

Sau khi chạy chương trình trên ta nhận được kết quả:

Bài viết mình đến đây là kết thúc. Cám ơn các bạn đã theo dõi !

avatar
  Subscribe  
newest oldest most voted
Notify of
No-Name
Guest
No-Name

Mình hiểu đề bài theo dạng tìm phần tử chẵn lớn nhất ở trong mảng phải nhỏ hơn phần tử lẻ nhất ở trong mảng. #include #include #include #define MAX 100 //int tim_max_chan(int a[],int n){ void tim_max_chan(int a[],int n){ int max = 1000000; int min = 1000000; for(int i =0;i0 && a[i] < min){ min = a[i]; } else if(a[i] < max && a[i] < min){ max = a[i]; } } //printf("Min is %d \n", min); //return max; if(min < max){ printf("Khong co gia tri thoa dieu kien \n"); //return -1; } else { printf("Max is %d \n", max); //return… Read more »