Các hàm xây dựng:{ 1. Ham kiem tra mang doi xung } Function KtraDoiXung (A:Mang20; N:Integer ) : Boolean; Var Flag:Boolean; i :Integer; Begin Flag:=True; For i :=1 to N do If(A[i] <> A[N-i +1]) Then Flag :=False; { Cham dut kiem tra, ket qua qua trinh : khong doi xung } KtraDoiXung :=Flag; End; { 2. Ham kiem tra mang tang } Function KtraMangTang ( A:Mang20; N :Integer) : Boolean; Var Flag : Boolean; i :Integer; Begin Flag := True; For i :=1 to N do If(A[i] < A[i-1]) Then Flag :=False; { Cham dut kiem tra, ket qua qua trinh : khong tang } KtraMangTang :=Flag; End; { 3. Thu tuc sap xep mang tang } Function SxepMangTang (A:Mang20; N:Integer ):Integer; Var i ,j,k :Integer; Begin For i :=1 to N do For j :=1 to N do If ( (i<j) and (A[i] > A[j]) ) then Begin k := A[i]; { Tien hanh hoan doi gia tri A[i], A[j] } A[i] := A[j]; { cho nhau thong qua bien tam k } A[j] := k; End; End; Source code chương trình chính: BEGIN Clrscr; NhapMang1C(A, N); { Ham nhap xuat khong nhac lai nua } XuatMang1C(A, N); { Su dung ket qua o truoc } If ( KtraDoiXung (A, N ) ) then Writeln( ' Mang A doi xung.') Else Writeln(' Mang A khong doi xung.'); If ( KtraMangTang (A, N ) ) then Writeln( 'Mang A la mang tang ') Else Begin Writeln( 'Mang A khong phai la mang tang. '); SxepMangTang( A, N ); Writeln( 'Ket qua sap sep:'); XuatMang1C(A, N); End; Readln; END .
Mở rộng:
+ Kiểm tra mảng A chỉ chứa toàn những số nguyên tố?
+ Kiểm tra mảng giảm dần, Sắp xếp mảng giảm dần.
+ Sắp xếp mảng A có các số dương tăng dần, các số âm giảm dần.
Function SxepDuongTangAmGiam ( A[]:Mang20, N:Integer ); Var i ,j ,k:Integer; Begin For i:=1 to N do For j:=1 to N do If ( ( (i<j)and (A[i] > A[j]) and (A[i]>0) and (A[j]>0)) or ((i<j) and ( A[i] < A[j] ) and ( A[i]<0) and ( A[j]<0))) then Begin k := A[i]; { Tien hanh hoan doi gia tri A[i], A[j]} A[i] := A[j]; { thong qua bien tam k } A[j] := k; End; End; + Kiểm tra mảng A là một chuỗi cấp số cộng có công sai k = 5? Ví dụ: 1 6 11 16 21 26 31 Function KtraMangCapSoCong (A:Mang20; N:Integer; k:Integer):Boolean; Var flag :boolean; i :Integer; Begin for i:=1 to N do if(A[i] < > A[i-1] + k) then flag:=false; { Cham dut, ket qua: khong phai} KtraMangCapSoCong:=flag; {Ket qua kiem tra la mang cap so cong} End;