Viết chương trình kiểm tra mảng có đối xứng không, có tăng dần không, nếu mảng không tăng dần hãy sắp xếp thành mảng tăng dần
Viết chương trình kiểm tra mảng có đối xứng không, có tăng dần không, nếu mảng không tăng dần hãy sắp xếp thành mảng tăng dần
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;
uses crt;
var i,j,n,t,td,dx:longint; a:array[1..1000000]of longint;
begin
clrscr;
write(‘Nhap n: ‘);readln(n);
for i:=1 to n do
begin
write(‘a[‘,i,’]=’);readln(a[i]);
if a[i]<a[i-1] then td:=1;
if (i>n div 2) and(a[i]<>a[n-i+1]) then dx:=1;
end;
if dx=0 then writeln(‘Day la mang doi xung’)
else writeln(‘Day khong la mang doi xung’);
if td=0 then writeln(‘Day la mang tang dan’) else
begin
writeln(‘Day khong la mang tang dan’);
for i:=1 to n do
for j:=1 to i do
if a[i]<a[j] then
begin
t:=a[i]; a[i]:=a[j]; a[j]:=t;
end;
write(‘Mang sau khi sap xep: ‘);
for i:=1 to n do write(A[i],’ ‘);
end;
readln
end.