Viết chương trình pascal kiểu mảng
Bài toán số 3.2: Đế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 Show
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:
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.
Mở rộng: In ra phần tử xuất hiện ít nhất và nhiều nhất trong mảng. Bài toán số 3.3: 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:
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. |