DỮ LIỆU KIỂU MẢNG (ARRAY)
Mảng: Tập hợp các phần tử cùng kiểu dữ liệu
I. KHAI BÁO MẢNG
Cú pháp:
TYPE Kiểu mảng = ARRAY [chỉ số đầu..chỉ số cuối] OF Kiểu dữ liệu;
VAR Biến mảng:Kiểu mảng;
hoặc khai báo trực tiếp:
VAR Biến mảng : ARRAY [chỉ số đầu..chỉ số cuối] OF Kiểu dữ liệu;
Ví dụ:
Tập hợp 100 phần tử mảng A kiểu số nguyên
var a:array[1..100] of integer;
II. XUẤT NHẬP TRÊN DỮ LIỆU KIỂU MẢNG
- Để truy cập đến phần tử thứ k trong mảng một chiều A, ta sử dụng cú pháp: A[k].
Ví dụ: a[9]: truy cập vào phần tử thứ 9 của mảng A. (write(a[9]);
III.Bài tập
Bài 1. Nhập vào số n.Sau đó nhập n phần tử kiểu số nguyên. In ra màn hình các số nguyên đó
var a:array[1..100] of integer;
begin
write(‘nhap so n:’);readln(n);
for i:=1 to n do
begin
write(‘a[',i,']:’);readln(a[i]);
end;
write(‘cac phan tu trong mang:’);
for i:=1 to n do
write(a[i],’ ‘);
readln;
end.
==============================================
Bài 2: Nhập vào số n.Sau đó nhập n phần tử kiểu số nguyên.
1. In ra màn hình các số nguyên đó
2. Tính tổng các phần tử dương có trong mảng
3. Nhập vào số x. Kiểm tra xem có bao nhiêu phần tử bằng x
4. Tìm số lớn nhất có trong dãy
5. Đổi chỗ phần tử đầu tiên và phần tử cuối cùng
var a:array[1..100] of integer;
n,i,nhapmang,tong,max,tongduong,x,dem,t:integer;
procedure nhap_mang;
begin
write(‘nhap so n:’);readln(n);
for i:=1 to n do
begin
write(‘a[',i,']:’);readln(a[i]);
end;
end;
procedure in_mang;
begin
write(‘cac phan tu trong mang:’);
for i:=1 to n do
write(a[i],’ ‘);
end;
procedure tinh_tong;
begin
tong:=0;
for i:=1 to n do
tong:=tong+a[i];
write(‘tong la:’,tong);
end;
procedure tong_duong;
begin
tongduong:=0;
for i:=1 to n do
begin
if a[i]>0 then
tongduong:=tongduong+a[i];
end;
write(‘tong so duong la:’,tongduong);
end;
procedure kiemtra;
begin
write(‘nhap vao x:’);readln(x);
dem:=0;
for i:=1 to n do
begin
if a[i]=x then
dem:=dem+1;
end;
write(‘so phan tu bang x:’,dem);
end;
procedure tim_max;
begin
max:=a[1];
for i:=2 to n do
begin
if max<a[i] then
max:=a[i];
end;
write(‘phan tu lon nhat :’,max);
end;
procedure doi_cho;
begin
t:=a[1];
a[1]:=a[n];
a[n]:=t;
write(‘sau khi doi cho:’);
in_mang;
end;
begin
nhap_mang;
in_mang;
tinh_tong;
tong_duong;
kiemtra;
tim_max;
doi_cho;
readln;
end.
Bài tập:
Nhập n. Sau đó nhập n số nguyên vào mảng a
1. Tính xem trong mảng có bao nhiêu số nguyên tố, in ra các số nguyên tố đó và nêu ra vị trí của nó và tính tổng các nguyên tố đó
Loi giai cua Sang Quy
function nguyento(k:integer):boolean;
var kt:boolean;
begin
kt:=true;
for i:=2 to k-1 do
if (k mod i=0) then
begin
kt:=false;
break;
end;
nguyento:=kt;
end;
procedure insonguyento;
var i,dem,tong:integer;
begin
writeln(‘cac phan tu nguyen to trong mang la: ‘);
tong:=0;
dem:=0;
for i:=1 to n do
begin
if (nguyento(a[i])=true)then
begin
write(a[i],’ ‘);
tong:=tong+(a[i]);
dem:=dem+1;
end;
end;
writeln(‘tong la’, tong);
writeln(‘so cac so nguyen to:’ ,dem);
end;
procedure sapxep;
var i,j,jmin,tg:integer;
begin
for i:=1 to n-1 do
begin
jmin:=i;
for j:=i+1 to n do
begin
if (a[j]<a[jmin]) then
jmin:=j;
end;
if (i<>jmin) then
begin
tg:=a[i];
a[i]:=a[jmin];
a[jmin]:=tg;
end;
end;
write(‘Mang sau khi sap xep la:’);
for i:=1 to n do
write(a[i],’ ‘); 2. Sắp xếp mảng tăng dần. Tham khảo cách làm tại đây
3. Tìm số lớn nhì
Ví dụ:
n=7.
3 50 7 11 12 45 41
Co 4 so nguyen to
Cac so nguyen to do la: 3 7 11 41
Vi tri: 1 3 4 7
Tong cac so nguyen to: 62
Mang sau khi sap xep la: 3 7 11 12 41 45 50
So lon nhi: 45
Thuật toán sắp xếp
