Chúng ta tiếp tục
chuyển sang tìm hiểu về mảng. Đầu tiên là mảng 1 chiều: Mảng được hiểu đơn giản là tập các phần tử
giống nhau về kiểu (loại) để hiểu rõ hơn chúng ta sẽ đi vào các nội dung liên
quan tới thao tác về mảng. Khai báo:
Code:
ten_mang:array[chi_so] of kieu_phan_tu
Ví dụ: Mảng n phần tử thực
Code:
a:array[1..n] of real;
chi_so có thể biểu
diễn 2 cách + Dạng dữ liệu miền conchi_so_dau..chi_so_cuoi Như ở ví dụ trên chi_so_dau là 1 và
chi_so_cuoi là n + Dạng chỉ số liệt kê Ví dụ:
Code:
type:
thu=(Hai,Ba,Bon,Nam,Sau,Bay,Chunhat);
Tuan:array[thu] of boolean;
Sau khi nắm sơ qua
các khái niệm cơ bản về mảng chúng ta cùng đi vào 1 ví dụ. Tìm phần tử lớn nhất trong 1 dãy phần tử Thuật toán (tức ý tưởng để giải quyết bài
toán) 1. Nhập vào các phần tử của mảng a1,a2,,an 2. max:=a1. So sánh max với các phần tử còn
lại, nếu a[i]>max thì gán max:=a[i]
Code:
program tim_max;
const n=10;{gán cố định số phần tử của
mảng là 10, cái này có thể cho là 1 biến để nhập vào}
var a:array[1..n] of real;
max:real;
i:integer;
begin
writeln(Nhap cac phan tu cua mang);
for i:=1 to n do
begin;
write(Nhap a[',i,']:= );
readln(a[i]);
end;
max:=a[1];
for i:=2 to n do {do da gan max:=a[1]
nen khong can xet phan tu thu 1 nua}
if (max
write(Gia tri lon nhat cua mang la ,
max:5:3);
readln;
end.
Thêm 1 số ví dụ về
mảng: VD1: Sắp xếp 1 dãy số theo tứ tự tăng(giảm) dần.
Dãy số này được nhập vào.
Code:
for i:=1 to n-1 do {đi qua lần lượt từng
phần tử của dãy}
begin
for j:=i+1 to n do
if a[i]>a[j] then {so sánh với các
phần tử khác trong dãy có vị trí sau nó cho đến cuối dãy nếu nó lớn hơn thì đổi
chỗ}
begin
t:=a[i];
a[i]=a[j];
a[j]:=t;
end;
end;
writeln(Day so da sap xep);
for i:=1 to n do
writeln(a[i]);
VD2: Tìm các số dương trong 1 dãy và tính trung
bình cộng của chúng.
Code:
s:=0;
j:=0;
for i:=1 to n do
if a[i]>0 then
begin
s:=s+a;
j:=j+1;
end;
writeln(Day co ,j, so duong);
writeln(Trung binh cong cua cac phan tu
duong la ,s/j:2:4);
Tiếp tục các bài về
mảng ta chuyển sang mảng 2 chiều hay còn được gọi là ma trận: Mảng 2 chiều là 1 mảng số (có trật tự) gồm
m hàng và n cột.
Khai báo:
var ten_mang: array [1..max_m,1..max_n]; VD:
Code:
var a:array [1..m,1..n] of real;
a[i,j]: phần tử của
mảng tại hàng i cột j Các xử lý với mảng 2 chiều không khác so với
mảng 1 chiều chỉ lưu ý việc chỉ số của các phần tử bây giờ gồm hàng và cột. VD: Nhập mảng 2 chiều kích thước mxn In các giá trị của mảng ra màn hình.