Câu 2 (6,0 điểm): Dãy chẵn lẻ
Yêu cầu: Viết chương trình nhập vào một dãy số nguyên gồm n phần tử. In ra màn hình dãy số đã được sắp xếp như sau:Số lẻ tăng dần ở đầu dãy, số chẵn giảm dần ở cuối dãy
Dữ liệu: Dòng 1: số phần tử của dãy (n ≤105).
Dòng 2: Các giá trị của dãy (ai<=1018).
Kết quả: Ghi ra màn hình dãy số sau khi sắp xếp.
Ví dụ:
Dữ liệu |
| Kết quả |
6 1 6 5 3 8 4 |
| 1 3 5 8 6 4 |
pascal nha giup mik vs a
Chương trình có thể như sau:
program SapXepLeChan;
const
MAX = 100000;
type
Mang = array[1..MAX] of Int64;
var
a: Mang;
n, i, j, temp: integer;
procedure SapXep(var a: Mang; n: integer);
var
i, j, temp: integer;
begin
// Sắp xếp số lẻ tăng dần
for i := 1 to n - 1 do
for j := i + 1 to n do
if (a[i] mod 2 <> 0) and (a[j] mod 2 <> 0) then
if a[i] > a[j] then
begin
temp := a[i];
a[i] := a[j];
a[j] := temp;
end;
// Sắp xếp số chẵn giảm dần
for i := 1 to n - 1 do
for j := i + 1 to n do
if (a[i] mod 2 = 0) and (a[j] mod 2 = 0) then
if a[i] < a[j] then
begin
temp := a[i];
a[i] := a[j];
a[j] := temp;
end;
end;
begin
// Nhập dữ liệu
readln(n);
for i := 1 to n do
readln(a[i]);
// Sắp xếp
SapXep(a, n);
// In ra màn hình
for i := 1 to n do
writeln(a[i]);
end.