Viết chương trình nhập một dãy gồm N (0<N 100) số nguyên a - Chèn số nguyên K vào dãy sao cho dãy vẫn giữ được thứ tự giảm dần (không được sắp xếp lại) Dữ liệu vào: Nhập từ bàn phím 1 , a 2 , a 3 ,…,a N và một số nguyên K, mỗi số có giá trị nhỏ hơn 65000. Yêu cầu: - Xếp lại dãy đó theo thứ tự giảm dần. - Dòng đầu đọc số nguyên N. - Dòng thứ hai là các số của dãy cách nhau một khoảng trắng theo thứ tự a 1 , a 2 , a 3 ,…,a N . - Dòng thứ ba nhập số nguyên K Kết quả ra: Xuất ra màn hình - Dòng thứ nhất là dãy số được sắp xếp giảm dần. - Dòng thứ hai là dãy số được sắp xếp giảm dần đã được chèn thêm số nguyên K VD: INPUT 6 6 11 8 2 9 34 12 OUTPUT 34 11 9 8 6 2 34 12 11 9 8 6 2
1 câu trả lời
program bai3;
uses crt;
var i,j,n,tg1,tg2,tg,k:integer;
a:array[1..50] of integer;
BEGIN
clrscr;
write('n = ');readln(n);
while (n<0) or (n>100) do
begin
write('nhap lai n=');readln(n);
end;
for i:=1 to n do
begin
write('a[',i,'] = ');readln(a[i]);
end;
tg1:=0;tg2:=0;
for i:=1 to n-1 do
for j:=i+1 to n do
if a[i]<a[j] then
begin
tg:=a[i];
a[i]:=a[j];
a[j]:=tg;
end;
writeln('day vua sap xep: ');
for i:=1 to n do write(a[i],' ');
Writeln;
Write('Nhap vao so k: '); Readln(k);
i:=1;
While (k>a[i]) and (i<=n) do
i:=i+1;
For j:=n+1 downto i do
a[j]:=a[j-1];
a[i]:=k;
Writeln('Mang sau khi chen ',k,': ');
For i:=1 to n+1 do
Write(a[i],' ');
Readln;
END.