Tìm vị trí phần tử trong mảng C/C++

0
39267
tim vi tri xuat hien cua phan tu trong mang

Tìm vị trí phần tử xuất hiện trong mảng là bài tập số 15 trong chuỗi các bài tập thực hành ngôn ngữ lập trình C/C++ do mình giới thiệu.

1.Giới thiệu bài toán

Tìm kiếm vị trí phần tử trong mảng là một bài toán hay và đơn giản. Đây là một trong những bài toán giúp bạn hiều được phần nào về tìm kiếm.

Đề bài:

Viết hàm trả về vị trí đầu tiên của số x xuất hiện trong mảng một chiều a có n phần tử. Viết hàm trả về vị trí cuối cùng của số x xuất hiện trong mảng một chiều a có n phần tử.

Hai bài toán nhưng mình gộp lại thành một, vì nội dung khá liên quan đến nhau. Cùng giải quyết thôi nào!

2.Giải quyết bài toán

Bài tập này ở mức vận dụng cơ bản, bạn chỉ cần nắm chắc các cú pháp, cách dùng của chủng là có thể làm được.

2.1 Hàm tìm kiếm vị trí xuất hiện đầu tiên code C/C++

Tìm kiếm có hai trường hợp: Vị trí xuất hiện đầu tiên và vị trí xuất hiện cuối cùng

Ý tưởng: sử dụng vòng lặp duyệt mảng, gặp phần tử có giá trị bằng số x lập tức dừng vòng lặp và trả về kết quả.

Ở đây mình sẽ viết hàm trả về vị trí nên dùng kiểu int. Hàm truyền vào 3 tham số là tên mảng, số phần tử của mảng và phần tử cần tìm.

Code C/C++:

int FindFirstX(int a[], int n, int x){
	for(int i=0;i<n;i++)
		if(a[i]==x)
			return i;
}

Cách đặt tên hàm thì tùy ý bạn nhé.

2.2 Hàm tìm vị trí xuất hiện cuối cùng trong mảng code C/C++

Hàm tìm vị trí cuối cùng xuất hiện có khác thêm một chút. Khá giống với tư tưởng tìm vị trí đầu tiên.

Điểm khác biệt ở đây là cần dùng một biến để lưu vị trí. Sau khi duyệt từ đầu đến cuối mảng ta sẽ có được vị trí cuối cùng mà phần tử cần tìm xuất hiện.

Xem code tham khảo sau bạn sẽ hiểu hơn:

int FindLastX(int a[], int n, int x){
	int vitri;
	for(int i=0;i<n;i++)
		if(a[i]==x)
			vitri=i;
	return vitri;
}

2.3 Chương trình tìm kiếm vị trí phần tử C/C++

Để thành chương trình hoàn thiện, bạn cần thêm một số cấu trúc mặc định của ngôn ngữ C/C++.

Do làm việc với mảng nên chúng ta cũng cần thêm hàm nhập xuất mảng vào chương trình nhé!

Code C và C++ không khác nhau nhiều lắm, nếu bạn đang cần tìm kiếm chương trình bằng code C thì chỉ cần sửa một chút câu lệnh in ra màn hình, nhập giá trị từ bàn phím là được.

Code C++:

#include<bits/stdc++.h>
using namespace std;
void nhap(int a[], int &n){
	do{
		cout<<("Nhap n: ");
		cin>>n;
	}
	while(n<2||n>99);
	for(int i=0; i<n; i++){
		cout<<"a["<<i<<"]: ";
		cin>>a[i];
	}
}

void xuat(int a[], int n){
	for(int i=0;i<n;i++){
		cout<<"  "<<a[i];
	}
}

int FindFirstX(int a[], int n, int x){
	for(int i=0;i<n;i++)
		if(a[i]==x)
			return i;
}

int FindLastX(int a[], int n, int x){
	int vitri;
	for(int i=0;i<n;i++)
		if(a[i]==x)
			vitri=i;
	return vitri;
}
int main(){
	int a[100];
	int n, x;
	nhap(a,n);
	cout<<"Nhap phan tu can tim: ";
	cin>>x;
	cout<<"Vi tri dau tien cua phan tu: "<<FindFirstX(a,n,x)<<endl;
	cout<<"Vi tri cuoi cung cua phan tu: "<<FindLastX(a,n,x)<<endl;
	return 0;
}

Bài viết của mình đến đây là hết, cảm ơn bạn đã quan tâm bài viết. Đừng bỏ lỡ bài tập lập trình C/C++ tiếp theo nhé!

Xem tiếp bài 16: Đếm số lần xuất hiện của phần tử trong mảng

Xem lại bài 14: Xóa số nguyên tố trong mảng C/C++

Tải về đề cương 67 bài tập lập trình C/C++

LEAVE A REPLY

Please enter your comment!
Please enter your name here