Bài tập  /  Bài đang cần trả lời

Lập trình - Lớp 8
10/01 12:33:46

Viết chương trình nhập dãy số nguyên n phần tử, n được nhập từ bàn phím - In ra màn hình dãy số vừa nhập theo sắp xếp tăng dần

PASCAL Câu 3. Viêt chương trình nhập dãy số nguyên n phần tử, n được nhập từ bàn phím - In ra màn hình dãy số vừa nhập theo sắp xếp tăng dần. - Nhập vị trí cần chèn và một số cần thêm vào. In ra dãy số sau khi chèn vào.
 
1 trả lời
Hỏi chi tiết
Trợ lý ảo
138
Tham khảo câu trả lời từ Trợ lý ảo Lazi
Dưới đây là chương trình Pascal để nhập dãy số nguyên và thực hiện việc sắp xếp tăng dần và chèn số vào vị trí cần chèn:

```pascal
program InsertionSort;

const
MAX = 100;

var
arr: array[1..MAX] of Integer;
n, i, j, insertPos, insertNum: Integer;

procedure InsertionSort(var arr: array of Integer; n: Integer);
var
i, j, temp: Integer;
begin
for i := 2 to n do
begin
temp := arr[i];
j := i - 1;
while (j > 0) and (arr[j] > temp) do
begin
arr[j + 1] := arr[j];
j := j - 1;
end;
arr[j + 1] := temp;
end;
end;

procedure PrintArray(arr: array of Integer; n: Integer);
var
i: Integer;
begin
for i := 1 to n do
Write(arr[i], ' ');
Writeln;
end;

begin
Write('Nhap so phan tu cua day: ');
Readln(n);

Write('Nhap day so nguyen: ');
for i := 1 to n do
Read(arr[i]);

InsertionSort(arr, n);

Writeln('Day so sau khi sap xep tang dan:');
PrintArray(arr, n);

Write('Nhap vi tri can chen: ');
Readln(insertPos);

Write('Nhap so can them: ');
Readln(insertNum);

for i := n downto insertPos + 1 do
arr[i] := arr[i - 1];

arr[insertPos] := insertNum;
n := n + 1;

Writeln('Day so sau khi chen:');
PrintArray(arr, n);
end.
```

Chương trình trên sử dụng thuật toán sắp xếp chèn để sắp xếp dãy số nguyên theo thứ tự tăng dần. Sau đó, nó cho phép người dùng nhập vị trí cần chèn và số cần thêm vào. Chương trình sẽ chèn số đó vào vị trí cần chèn và in ra dãy số sau khi chèn.
0
1
+5đ tặng

uses crt;

var a:array[1..100]of integer;

i,n,tam,j:integer;

begin

clrscr;

write('Nhap n='); readln(n);</p><p>for i:=1 to n do </p><p>begin</p><p>write('A[',i,']='); readln(a[i]);

end;

for i:=1 to n-1 do 

  for j:=i+1 to n do 

if a[i]<a[j] then

begin

tam:=a[i];

a[i]:=a[j];

a[j]:=tam;

end;

for i:=n downto 1 do 

  write(a[i]:4);

readln;

end.

Mở khóa để xem toàn bộ nội dung trả lời

(?)
Bạn đã đạt đến giới hạn của mình. Bằng cách Đăng ký tài khoản, bạn có thể xem toàn bộ nội dung trả lời
Cải thiện điểm số của bạn bằng cách đăng ký tài khoản Lazi.
Xem toàn bộ các câu trả lời, chat trực tiếp 1:1 với đội ngũ Gia sư Lazi bằng cách Đăng ký tài khoản ngay bây giờ
Tôi đã có tài khoản? Đăng nhập

Bạn hỏi - Lazi trả lời

Bạn muốn biết điều gì?

GỬI CÂU HỎI
Học tập không giới hạn cùng bạn bè học sinh cả nước, đến LAZI, sôi động, tích cực, trải nghiệm
Câu hỏi Lập trình mới nhất

Hôm nay bạn thế nào? Hãy nhấp vào một lựa chọn, nếu may mắn bạn sẽ được tặng 50.000 xu từ Lazi

Vui Buồn Bình thường

Học ngoại ngữ với Flashcard

×
Gia sư Lazi Gia sư
×
Trợ lý ảo Trợ lý ảo