Tìm kiếm và thay thế. Tìm kiếm vị trí xuất hiện của x trên mảng A. Thay thế những giá trị Ai là x thành y.
Ví dụ: A: 1 5 6 7 4 1 5 5 1 1
X=5 Y=15
Kết quả: Vi tri xuat hien X la 1
Ket qua thay the: 1 15 6 7 4 1 15 15 1 1
Hướng dẫn:
- Xây dựng hàm tìm kiếm giá trị X trong mảng A, N phần tử. Sử dụng vòng lặp từ 0 đến N-1 để kiểm tra tất cả các giá trị Ai, nếu bằng x thì trả về vị trí i tìm thấy. Nếu thoát vòng lặp mà không tìm thấy thì trả về là –1.
- Xây dựng hàm thay thế giá trị x bằng y tại vị trí tìm thấy đầu tiên. Tương tự như tìm kiếm, nhưng khi tìm thấy thì tiến hành gán giá trị mới cho Ai là y.
- Xây dựng hàm thay thế tất cả các giá trị x bằng y tại mỗi vị trí tìm thấy. Sử dụng vòng lặp duyệt qua tất cả các giá trị của Ai, nếu Ai bằng x thì tiến hành gán thành y.
Các hàm xây dựng:
{ 1. Ham tim kiem gia tri X trong mang A voi N phan tu }
Function TimKiem ( A:Mang20; N:Integer; X:Integer ):Boolean;
Var Flag : Boolean;
i:Integer;
Begin
Flag:=False;
For i:=0 to N do
Begin
If (A[i] = x) then
Begin
Flag:=True;
Break; {Tim thay ==> Tra ve vi tri tim thay }
End;
End;
TimKiem:=Flag;
End;
{ 2. Thay the phan tu X dau tien tim thay trong mang bang gia tri Y }
Function ThayThe(Var A:Mang20;Var N, x, y:Integer):Integer;
Var i:Integer;
Begin
For i:=0 to N do
If (A[i] = x) then
Begin
A[i] := y; { Tim thay x ==> thay the thanh y }
Break; { Cham dut qua trinh thay the}
End;
ThayThe := i;
End;
{ 3. Thay the tat ca cac phan tu co gia tri X tim thay bang gia tri Y }
Procedure ThayTheTatCa (Var A:Mang20; Var N, x,y:Integer);
Var i:Integer;
Begin
For i:=0 to N do
If(A[i] = x) then { Tim thay x ==> thay the thanh y }
A[i] := y;
End;
Source code chương trình chính
BEGIN
NhapMang1C(A, N); { Ham nhap xuat khong lam lai nua }
XuatMang1C(A, N); { Su du let qua o truoc }
Write('Gia tri x:'); Readln(x);
If (TimKiem(A,N,x)) then
Writeln( 'Tim thay tai vi tri trong mang A.', x, k )
Else
Writeln( 'Khong tim thay trong mang A', x );
Write('gia tri y:'); Readln(y);
ThayThe(A, N, x, y);
Writeln('Ket qua thay the ',x, y);
XuatMang1C(A, N);
ThayTheTatCa(A, N, x, y);
Writeln('Ket qua thay the tat ca la:',x, y);
XuatMang1C(A, N);
Readln;
END.
Mở rộng: + Tìm kiếm các cặp 2 phần tử gần nhau có tổng chia hết cho 10. Thay thế các phần tử đó bằng tổng của chúng.
Ví dụ: A: 1 19 62 7 8 32 12
Ket qua: 20 20 62 7 40 40 12
Procedure ThayTheBangTong(Var A:Mang20; N:Integer; X, Y:Integer);
Var i,k:Integer;
Begin
For i:=0 to N do
If( (A[i-1]+A[i]) mod 10 = 0) then
Begin
k := (A[i-1]+A[i]);
A[i-1] := k;
A[i] := k;
End;
End;