Pascal | Tìm kiếm vị trí xuất hiện của x trên mảng A

Pascal | Tìm kiếm vị trí xuất hiện của x trên mảng A

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;
Bạn thấy bài viết này như thế nào?: 
Average: 9.9 (594 votes)
Ảnh của Tommy Tran

Tommy owner Express Magazine

Drupal Developer having 9+ year experience, implementation and having strong knowledge of technical specifications, workflow development. Ability to perform effectively and efficiently in team and individually. Always enthusiastic and interseted to study new technologies

  • Skype ID: tthanhthuy

Advertisement

 

jobsora

Dich vu khu trung tphcm

Dich vu diet chuot tphcm

Dich vu diet con trung

Quảng Cáo Bài Viết

 
Bắt đầu làm quen với Big Data - How, When and Who

Bắt đầu làm quen với Big Data - How, When and Who

Big Data là nhu cầu đang tăng trưởng lớn đến nỗi Software AG, Oracle, IBM, Microsoft, SAP, EMC, HP và Dell đã chi hơn 15 tỉ USD cho các công ty 

Sử dụng CasperJS, Drush and Jenkins để test Drupal

Sử dụng CasperJS, Drush and Jenkins để test Drupal

A few weeks ago, spurred on by some frustrating interactions with Behat and Javascript, I started looking into alternative frameworks for running behavioral tests against Drupal

Tạm biệt nỗi “ám ảnh” dấu vân tay trên màn hình điện thoại

Tạm biệt nỗi “ám ảnh” dấu vân tay trên màn hình điện thoại

Nỗi khó chịu của người sử dụng thiết bị có màn hình cảm ứng do việc để lại dấu vân tay khi thao tác chạm có thể sẽ không còn là nỗi “ám ảnh” nữa khi mà các nhà nghiên cứu ở Đức vừa có một phát hiện thú vị.

Công ty diệt chuột T&C

 

Diet con trung