Bài 9. Làm việc với dãy số

Asuna

Sắp xếp dãy số Tên chương trình: sorting.pas
Cho dãy N số nguyên a1, a2,..., an. Hãy sắp dãy số đã cho theo thứ tự tăng dần các số lẻ
và giảm dần các số chẵn?
Dữ liệu vào: File sorting.inp gồm hai dòng
+ Dòng 1: ghi số nguyên N (0< N<1000)
+ Dòng 2: ghi N số a1, a2,...< aN (với ai <=109
)
Dữ liệu ra: File sorting.out gồm hai dòng
+ Dòng 1: Ghi các số lẻ tăng dần
+ Dòng 2: ghi các số chẵn giảm dần
Ví dụ:

Sorting.inp Sorting.out

6
2 3 5 1 4 6

1 3 5
6 4 2

Dưới đây là mã chương trình Pascal để sắp xếp dãy số theo yêu cầu đã cho:

```pascal
program sorting;

const
MAX_N = 1000;

var
N, i, j, temp: integer;
arr: array[1…MAX_N] of integer;
oddArr, evenArr: array[1…MAX_N] of integer;
oddCount, evenCount: integer;
inputFile, outputFile: text;

begin
// Mở file input và đọc dữ liệu
assign(inputFile, 'sorting.inp');
reset(inputFile);
readln(inputFile, N);
for i := 1 to N do
read(inputFile, arr[i]);
close(inputFile);

// Sắp xếp mảng theo yêu cầu
oddCount := 0;
evenCount := 0;
for i := 1 to N do
begin
if arr[i] mod 2 = 1 then
begin
oddCount := oddCount + 1;
oddArr[oddCount] := arr[i];
end
else
begin
evenCount := evenCount + 1;
evenArr[evenCount] := arr[i];
end;
end;

// Sắp xếp mảng số lẻ tăng dần
for i := 1 to oddCount - 1 do
for j := i + 1 to oddCount do
if oddArr[i] > oddArr[j] then
begin
temp := oddArr[i];
oddArr[i] := oddArr[j];
oddArr[j] := temp;
end;

// Sắp xếp mảng số chẵn giảm dần
for i := 1 to evenCount - 1 do
for j := i + 1 to evenCount do
if evenArr[i] < evenArr[j] then
begin
temp := evenArr[i];
evenArr[i] := evenArr[j];
evenArr[j] := temp;
end;

// Mở file output và ghi kết quả
assign(outputFile, 'sorting.out');
rewrite(outputFile);
for i := 1 to oddCount do
write(outputFile, oddArr[i], ' ');
writeln(outputFile);
for i := 1 to evenCount do
write(outputFile, evenArr[i], ' ');
close(outputFile);
end.
```

Bạn có thể sao chép mã chương trình trên vào một tệp tin có tên `sorting.pas`, sau đó tạo một tệp tin `sorting.inp` và nhập dữ liệu theo định dạng đã cho. Chạy chương trình và kết quả sẽ được ghi vào tệp tin `sorting.out`.

Bình luận (0)
Phạm Dương Phúc Khang
21 tháng 1 lúc 22:55

var i,n:longint; a:array[1..1000] of longint;

begin

readln(n);

for i:=1 to n do read(a[i]);

for i:=1 to n do

     if a[i] mod 2=0 then 

         begin

              inc(k);

              b[k]:=a[i];

         end

else

begin

inc(t);

c[t]:=a[i];

end;

for i:=1 to k-1 do

for j:=i+1 to k do

if b[i]<b[j] then

begin

d:=b[i];

b[i]:=b[j];

b[j]:=d;

end;

for i:=1 to  t-1 do

for j:=i+1 to t do

if c[i]>c[j] then

begin

d:=c[i];

c[i]:=c[j];

c[j]:=d;

end;

for i:=1 to k do write(b[i],' ');

for i:=1 to t do write(c[i],' ');

end.

Bình luận (0)

Các câu hỏi tương tự
nguyễn thu thủy
Xem chi tiết
Học .com
Xem chi tiết
Hoàng Long Đậu
Xem chi tiết
Trần Văn Dũng
Xem chi tiết
Nguyễn Xuân Dự
Xem chi tiết
nhannhan
Xem chi tiết
Hồ Thị Ngọc Vy
Xem chi tiết
Thanh Tùng Nguyễn
Xem chi tiết
Nguyễn Thị Hồng Cảnh
Xem chi tiết