Viết chương trình sắp xếp mảng và cho biết phần tử x xuất hiện bao nhiêu lần trong dãy, (dùng procedure và function)

1 câu trả lời

program b1;
uses crt;
type mang=array[1..100] of longint;
var n,i,x,dem:integer;
    a:mang;
procedure nhap(var a:mang; var n:integer);
var i:integer;
begin
write('nhap n:'); readln(n);
for i:=1 to n do
begin
write('a[',i,']='); readln(a[i]);
end;
end;
{-------------------------------------------}
procedure xuat(a:mang; n:longint);
var i:integer;
begin
for i:=1 to n do
write(a[i],' ');
writeln;
end;
{--------------------------------------------}

procedure sapxep(a:mang; n:longint);
var i,j,z:integer;
begin
for i:=1 to n-1 do
for j:=i+1 to n do
if(a[i]>a[j]) then
begin
z:=a[i];
a[i]:=a[j];
a[j]:=z;
end;
write('ket qua sau khi sap xep la:'); for i:=1 to n do
write(a[i]:5);
end;
{------------------------------------------}
function timkiem1(a:mang; n,x:longint):boolean;
var dau,cuoi,giua:longint;
    kt:boolean;
begin
dau:=1;
cuoi:=n;
kt:=false;
while (dau<=cuoi) do
begin
giua:=(dau+cuoi) div 2;
if x=a[giua] then
begin
kt:=true;
break;
end;
if x>a[giua] then dau:=giua+1;
if x<a[giua] then cuoi:=giua-1;
end;
exit(kt);
end;
{------------------------------------------}
function biendem(a:mang;n,x:longint):longint;
var i,dem:integer;
begin
dem:=0;
for i:=1 to n do
if a[i]=x then begin
dem:=dem+1;
biendem:=dem;
end;
end;
begin
nhap(a,n);
xuat(a,n);
sapxep(a,n);
writeln;
write('x='); readln(x);
if timkiem1(a,n,x)=false then write(x,' ko co trong mang')
else write(x,' co trong mang');
writeln;
write('x='); readln(x);
write('so lan ',x,' xuat hien trong day la:',biendem(a,n,x));
readln
end.

Câu hỏi trong lớp Xem thêm