Nếu trong n phần tử đã nhập có X thì báo “Tìm thấy”

Nếu trong n phần tử đã nhập có X thì báo “Tìm thấy”-24h68

Đề bài

Ý tưởng thuật toán

Tổng quan

Hiểu đơn giản là: Chúng ta có một dãy số (n số), kiểm tra 1 số bất kỳ trong dãy số (số x), xem số x xuất hiện hay không và có thì xuất hiện mấy lần trong dãy.

Dưới đây là các bước thực hiện theo đầu bài, bạn phải hiểu và sắp xếp các bước sao cho phù hợp:

Nhập n phần tử nguyên

Đây cũng là kích thước của mảng gồm n phần tử.

Nhập phần tử cần tìm kiếm x

Bạn sẽ nhập 1 số bất kỳ để máy tính sẽ check trong dãy số bạn vừa nhập xem có số nào giống không, và nó xuất hiện bao nhiêu lần.

Nhập giá trị các phần tử

Có 2 cách để viết:

Cách 1

void nhap(int a[], int n, char *name)
{
	for (int i=0;i<n;i++)
	{
		cout<<name<<"["<<i<<"]= "; cin>>a[i];
	}
}

Các bạn có thể thấy char *name hơi lạ 1 chút so với các bài hàm trước đây.

Thực ra nó có kiểu viết char *namechar* name.

Dấu hoa thị là toán tử dereferences. Nó áp dụng cho biểu tượng theo sau nó, bất kể số lượng khoảng cách giữa chúng. Do đó, ” char *name ” và ” char* name ” là cùng một biểu thức.

Tuy nhiên, ” char* name ” có nghĩa là không có gì. Toán tử hội nghị áp dụng cho biểu tượng theo sau: ” char *name ” là chính xác. Nó thực sự có nghĩa là: “(* name) là một char” hoặc “khi dereferenced, cũng là một char”.

name sẽ được đặt tên khi chúng ta gọi hàm nhap ở trong hàm main và đặt tên tùy ý.

Cách 2 này chúng ta gặp nhiều hơn nè

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

Kiểm tra xem X có trùng số nào trong dãy không

for (int i=0;i<n;i++)
    if (a[i]==x)
    {
        cout<<endl<<i<<": "<<a[i]<<" ";
        d++;
    }

i=0 vì phần tử đầu tiên của mảng là 0. Ví dụ: a[0]=… a[1]=… … a[n].

Kiểm tra phần tử thứ i nếu =x “… if (a[i]==x) …” thì hiển thị vị trí thứ i “… <<i …” và giá trị tại vị trí i đó.

Tiếp theo d++ là chúng ta đếm xem còn số nào trùng nữa không nếu điều kiện còn thỏa mãn.

Code đầy đủ bài toán

#include <iostream>
using namespace std;
void nhap(int a[], int n, char *name)
{
	for (int i=0;i<n;i++)
	{
		cout<<name<<"["<<i<<"]= "; cin>>a[i];
	}
}
int main()
{
	int a[10],n,x,i,d=0;
	cout<<"Nhap n: "; cin>>n;
	cout<<"Nhap x: "; cin>>x;
	nhap(a,n,"A");
	for (int i=0;i<n;i++)
		if (a[i]==x)
		{
			cout<<endl<<i<<": "<<a[i]<<" ";
			d++;
		}
	if (d>0)
		cout<<"\nTim thay "<<d<<" phan tu";
	else
		cout<<"\nKhong tim thay";		
}

Ví dụ, chúng ta nhập dãy số n gồm 4 phần tử: 6 8 9 8

Số x để kiểm tra trong dãy là x= 9.

Trường hợp này, chúng ta thấy số x = 9 xuất hiện 1 lần, thỏa mãn điều kiện if (a[i]==x)d++ hay d=d+1.

d khởi tạo =0 nên d=0+1 =1. Nó lấy d=1 đem so sánh ở dòng 22 và thấy d>0 nên in ra màn hình Tìm thấy 1 phần tử cout<<“\nTim thay “<<d<<” phan tu”;

Kết quả Khi chạy chương trình

Nhap n: 4
Nhap x: 9
A[0]= 6
A[1]= 8
A[2]= 9
A[3]= 8

2: 9
Tim thay 1 Phan tu
Nếu trong n phần tử đã nhập có X thì báo “Tìm thấy”-24h68
© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
Theo dõi
Thông báo của
的头像-24h68
0 Comments
Cũ nhất
Mới nhất Được bỏ phiếu nhiều nhất
Phản hồi nội tuyến
Xem tất cả bình luận