Bài toán:Tìm số chẵn/lẻ âm nhỏ nhất trong mảng
Input: mảng a có n phần tử
Xử lý: duyệt mảng, tìm vị trí chẵn/lẻ âm đầu tiên trong mảng
Giữ lại vị trí vừa mới tìm được, roi thoat khỏi vòng lặp
Nếu duyệt hết mảng mà không tìm được số chẵn/lẻ âm thì trả về giá trị -1
Nếu tìm được số chẵn/lẻ âm thì gán vị trí đó
Duyệt mảng từ vị trí chẵn/lẻ âm +1 đến hết mảng
Nều là giá trị chẵn/lẻ âm và giá trị chẵn/lẻ âm nhỏ hơn giá trị chẵn/lẻ âm đầu tiên tìm được thì cập nhật lại giá trị vừa tìm được, duyệt đến hết mảng sẽ tìm được giá trị chẵn/lẻ âm nhỏ nhất
Output: mảng không có giá trị chẵn/lẻ âm-1, giá trị chẵn/lẻ âm nhỏ nhất trong mảng
Hàm tìm số chẵn âm
int ChanAmNhoNhat(int a[], int n) { int vt,d,i; for( i=0 ; i<n ; i++ ) if(a[i]<0 && a[i]%2==0) { d=i; break; } if(i==n) return -1; vt=d; for(i=vt+1;i<n;i++ ) if(a[i]<0 && a[i]%2==0 && a[i]<a[vt]) vt=i; return a[vt]; }
Hàm tìm số lẻ âm
int LeAmNhoNhat(int a[], int n) { int vt,d,i; for( i=0 ; i<n ; i++ ) if(a[i]<0 && a[i]%!2==0) { d=i; break; } if(i==n) return -1; vt=d; for(i=vt+1;i<n;i++ ) if(a[i]<0 && a[i]%!2==0 && a[i]<a[vt]) vt=i; return a[vt]; }
Chương trình tìm số chẵn âm
#include<stdio.h> #include<conio.h> #include <stdlib.h> #define MAX 100 void nhapmang(int a[], int &n); void xuatmang(int a[], int n); int ChanAmNhoNhat(int a[], int n); void main() { int a[MAX],n; nhapmang(a,n); printf("\nNoi dung cua mang"); xuatmang(a,n); if(ChanAmNhoNhat(a,n)==-1) printf("\nTrong mang khong co so chan am "); else printf("\nSo chan am nho nhat trong mang la: %d",ChanAmNhoNhat(a,n)); printf("\nChuc cac ban hoc tot"); getch(); } void nhapmang(int a[], int &n) { do { printf("\nSo phan tu trong mang "); scanf("%d",&n); }while(n<=0 && n>100); for(int i=0 ; i<n ; i++ ) { printf("\nSo phan tu a[%d] la: ",i); scanf("%d",&a[i]); } } void xuatmang(int a[], int n) { for(int i=0 ; i<n ; i++ ) printf("%4d",a[i]); } int ChanAmNhoNhat(int a[], int n) { int vt,d,i; for( i=0 ; i<n ; i++ ) if(a[i]<0 && a[i]%2==0) { d=i; break; } if(i==n) return -1; vt=d; for(i=vt+1;i<n;i++ ) if(a[i]<0 && a[i]%2==0 && a[i]<a[vt]) vt=i; return a[vt]; }
Mình chia sẽ code này đê các bạn tham khảo các vấn đề tương tự. Tuy nhiên các bạn nên tự làm lại, đừng nên copy. Nếu gặp vấn đề gì khó khăn, hoặc thắc mắc gì, các bạn có thể đặt câu hỏi ở cuối bài. Mình sẽ giải đáp.
Chúc bạn thành công!
Xem thêm: Tìm vị trí số nguyên tố lớn nhất/nhỏ nhất trong mảng