Array trong Pascal là gì

Array trong Pascal là gì

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.

Code:

program vd_mang_2chieu;

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

i,j: integer;

begin

write(Nhap cac kich thuoc cho mang m,n:=);

readln(m,n);

write(Nhap cac phan tu cua mang);

for i:=1 to m do

for j:=1 to n do

begin

write(a[',i,j,']:=);

readln(a[i,j]);

end;

writeln(Mảng mới nhập vào);

for i:=1 to m do

begin

for j:=1 to n do

write(a[i,j]);

writeln;

end;

readln;

end.