Đếm số lần xuất hiện của giá trị X trong mảng A. Đếm số lần xuất hiện của các phần tử trong mảng.
Ví dụ: A: 1 5 6 7 4 1 5 5 1 1
X: 6
Kết quả: So lan xuat hien X la 1
So lan xuat hien cua cac phan tu:
1 ==> 4 5 ==> 3
6 ==> 1 7 ==> 1
4 ==> 1 1 ==> 4 …….
Hướng dẫn:
+ Viết hàm đếm số lần xuất hiện củat một giá trị X nào đó được nhập vào, và xem như X nhà là tham số cho việc đếm số lần xuất hiện của nó trong A
+ Viết hàm in ra số lần xuất hiên của tất cả các phần tử trong mảng, sử dụng lại hàm đã xây dựng ở trước.
+ Xây dựng chương trình giải quyết bài toán trên gồm:
- Khai báo mảng A, N phần tử.
- Nhập / Xuất mảng A với N phần tử (lưu ý, phải có định nghĩa hàm nhập /xuất mảng).
Hai hàm này được sử dụng kết quả của bài toán 3.1
- Nhập giá trị X cần đếm số là xuất hiện.
- In số lần xuất hiện của X trong A. Ý tưởng:
o Khởi tạo biến đếm ban đầu là 0.
o Sử dụng vòng lặp i, lặp từ 1 đến N.
o Đối với mỗi phần tử A[i], nếu A[i] = X thì tăng biến đếm lên 1
o Kết thúc, giá trị biến đếm là số lần xuất hiện cử X trong A.
- In số lần xuất hiện của các phần tử trong A.
Các hàm xây dựng:
{ 1. Dem so phan tu A[i] trong mang bang gia tri X }
Function DemPtuX(Var A : Mang20; N, X : Integer) : Integer;
Var i , Count : Integer;
Begin
Count := 0;
For i:=0 to N do
If ( A[i] = X ) then
Count := Count + 1;
DemPtuX := Count;
End;
{ 2. Dem so lan xuat hien cua tat ca cac phan tu trong mang }
Procedure InSoLanXHcuaPTu( A:Mang20; N: Integer);
Var i :Integer;
Begin
For i:=0 to N do
Writeln( A[i] ,' ===> ', DemPtuX( A, N, A[i] ) );
End;
Source code chương trình chính:
BEGIN
Clrscr;
NhapMang1C( A, N );
XuatMang1C( A, N );
Write( 'Gia tri X:' ); Readln( X );
Writeln( 'So lan xuat hien trong A la:', DemPtuX(A, N, X) );
InSoLanXHcuaPTu ( A, N );
Readln;
END .
Cải tiến: Không in ra các phần tử được lặp lại.
Hướng dẫn: Đối với mỗi phần tử, trước khi in, kiểm tra xem nó xuất hiện trước nó hay không.
- Nếu A[i] chưa xuất hiện trước nó, thì in ra số lần xuất hiện của A[i]
- Nếu A[i] có xuất hiện trước nó, thì không in ra số lần xuất hiện của A[i] nữa, vì đã in ra số lần xuất hiện của phần tử có giá trị bằng A[i] rồi.
Mở rộng: In ra phần tử xuất hiện ít nhất và nhiều nhất trong mảng.