30/09/2018, 16:12

Tìm vị trí phần tử lớn nhất trong mảng 1 chiều?

Chào mọi người, em mới học C và có 1 bài tập : Tìm vị trí phần tử lớn nhất trong mảng, nếu có nhiều phần tử lớn nhất thì chỉ cần tìm phần tử đầu tiên.
Cho em hỏi là cách tìm vị trí của phần tử lớn nhất như thế nào ạ

Nhánh Lan Rừng viết 18:23 ngày 30/09/2018

Trong 1 dãy số đâu có 2 số lớn nhất đâu bạn, chỉ có 1 số lớn nhất xuất hiện nhiều lần.
Gán max = phần tử đầu tiên, chạy vòng lập rồi tìm max => Lại chạy vòng lập kiểm tra phần tử nào = max thì xuất vị trí, rồi cho dừng vòng lập (break) sẽ được số lớn nhất nằm ở vị trí đầu tiên rùi đó.

Xuất vị trí là xuất cái biến bạn chạy vòng lập nhé.

Nguyễn Đình Dũng viết 18:18 ngày 30/09/2018

Gán max là phần tử A[0] đầu mảng, dùng for chạy 1 vòng mảng. Phần tử A[i] nào lớn hơn max thì gán max cho A[i], vị trí đó là i và là phần tử thứ i+1 trong mảng.

BaoLe viết 18:21 ngày 30/09/2018
#include<stdio.h>
int main(){
	int so_nguyen[]={2,5,7,9,6,3,2,1,1};//khai bao mot mang bat ki.
	int max=0,vi_tri=0,dem=0;
	//tim phan tu co gia tri lon nhat trong mang
	for(int i=0;i<sizeof(so_nguyen)/sizeof(int);i++){
		if(so_nguyen[i]>max)
			max=so_nguyen[i];
	}
	//tim vi tri xuat hien lan dau tien cua max va thoat khoi vong lap khi gap max lan dau tien
	for(int i=0;i<sizeof(so_nguyen)/sizeof(int);i++){
		if(so_nguyen[i]==max){
			vi_tri=i;
			dem=dem+1;
		}
		if(dem==1)
			break;
	}
	printf("Phan tu lon nhat trong mang da tao co gia tri bang:%d\nXuat hien lan dau tien tai vi tri:so_nguyen[%d]\n",max,vi_tri);
	return 0;
}

Ý tưởng của @Nhanh_Lan_R_ng la chính xác rồi đấy.Đây là code của mình, bạn tham khảo,nếu sai xót j thì fix lại giúp mình.

Tuấn Nguyễn viết 18:17 ngày 30/09/2018

Vị trí là cái chỉ số i trong mảng đó em. Tìm phần từ max như bình thường và cuối cùng thay vì return A[i]; thì mình return i;

mitomchua viết 18:12 ngày 30/09/2018

Em cảm ơn mọi người

Bài liên quan
0