Chào các bạn độc giả của Lập trình không khó, hôm nay chúng ta sẽ cùng nhau đi giải quyết bài tập tìm vị trí của số lớn nhất trong mảng 1 chiều. Chúng ta sẽ cần sử dụng kỹ thuật truy vết để giải quyết bài tập này. Chúng ta sẽ thông qua việc tìm chỉ số của số lớn nhất, nhỏ nhất để tìm được vị trí nhé.
Bài tập này yêu cầu bạn đã hiểu và biết cách để tìm phần tử lớn nhất trong mảng: https://nguyenvanhieu.vn/tim-so-lon-nhat-trong-mang/
Bài tập tìm vị trí của số lớn nhất
- Coi số đầu tiên trong mảng là số lớn nhất => chỉ số của số lớn nhất là 0:
- Duyệt qua từng số trong mảng => Sử dụng for, Nếu số hiện tại a[i] lớn hơn max:
- Lưu ý vị trí = chỉ số + 1
Hướng dẫn tìm vị trí của phần tử lớn nhất
Lời giải tham khảo:
/* Tìm tất cả các vị trí của số lớn nhất trong mảng 1 chiều. */ #include <stdio.h> #define MAX_SIZE 100 // sức chứa tối đa void NhapMang(int arr[], int n){ for(int i = 0; i < n; i++){ printf("Nhap arr[%d] = ", i); scanf("%d", &arr[i]); } } void XuatMang(int arr[], int n){ for(int i = 0; i < n; i++){ printf("narr[%d] = %d", i, arr[i]); } } /* Ý tưởng: 1. Coi số đầu tiên trong mảng là số lớn nhất => chỉ số của số lớn nhất là 0: max = a[0] index = 0 2. Duyệt qua từng số trong mảng => Sử dụng for, Nếu số hiện tại a[i] lớn hơn max: max = a[i]; index = i; 3. Lưu ý vị trí = chỉ số + 1 Giải bài toán: 1. Tìm giá trị lớn nhất của mảng 2. Duyệt và đưa ra các vị trí có giá trị = giá trị lớn nhất. */ int MaxElement(int a[], int n){ int maxValue = a[0]; for(int i = 0; i < n; i++){ if(a[i] > maxValue){ maxValue = a[i]; } } return maxValue; } void GetMaxPosition(int a[], int n){ int maxValue = MaxElement(a, n); printf("nVi tri cua phan tu lon nhat: "); for(int i = 0; i < n; i++){ if(a[i] == maxValue){ printf("%5d", i + 1); } } } int main(){ int arr[MAX_SIZE]; int n; // số lượng phần tử của mảng // Kiểm tra số lượng phần tử là số dương + nhỏ hơn MAX_SIZE do{ printf("Nhap n = "); scanf("%d", &n); }while(n <= 0 || n > MAX_SIZE); // Nhập mảng NhapMang(arr, n); // Xuất mảng XuatMang(arr, n); GetMaxPosition(arr, n); }
Kết quả chạy chương trình:
PS G:c_courcesday_44> .MaxElementPos.exe Nhap n = 5 Nhap arr[0] = 3 Nhap arr[1] = 4 Nhap arr[2] = 2 Nhap arr[3] = 1 Nhap arr[4] = 5 arr[0] = 3 arr[1] = 4 arr[2] = 2 arr[3] = 1 arr[4] = 5 Vi tri cua phan tu lon nhat: 5
Tìm vị trí của số nhỏ nhất trong mảng 1 chiều
Mình đã hướng dẫn bạn cách tìm vị trí của số lớn nhất, và cách làm cũng tương tự với bài toán tìm vị trí của số nhỏ nhất. Bạn chỉ cần thay hàm tìm phần tử lớn nhất thành tìm phần tử nhỏ nhất là được, phần nội dung này mình cũng đã có ở phần kiến thức yêu cầu trên đầu bài.
Theo dõi lập trình không khó tại:
Để lại một bình luận