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 [maxa[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.

Chủ Đề